Kopieren Sie Dateien aus Spalte1 in CSV in den Zielordnernamen in Spalte2 in CSV (Linux).

405
Alex L. Mermelstein

Ich habe eine CSV mit zwei Spalten. Spalte 1 sind vollständige Dateinamen. Spalte zwei sind Ordnernamen. Ich muss die Datei in Spalte 1 in den Ordner in Spalte 2 kopieren. Sowohl Dateien als auch Ordner befinden sich im selben Hauptverzeichnis. Ich habe folgendes Skript:

IFS=',' while read OS HS do cp -av $OS $HS done < SlingManifest.csv 

Dies besagt, dass es funktioniert, aber wenn ich den Ordner überprüfe, erhalte ich eine Datei ohne Namen. Der Inhalt der Datei ist korrekt, aber die Datei hat keinen Namen und in jedem Ordner ist nur eine Datei vorhanden. Wie kann ich das verhindern?

Beispiel vim von CSV:

TinyHouseNation_600SqFtPowercouplesRetreat_190473_SLING.xml,./2_25_17/ BuyingTheView_RuralCasaNiagara_192555_SLING.xml,./2_26_17/ BuyingTheView_SexyHideAwayToronto_192546_SLING.xml,./2_26_17/ LifetimeOriginalMovie_LoveByThe10thDate_188563_SLING.xml,./2_27_17/ Special_10thDateGirlsNightIn_196744_SLING.xml,./2_27_17/ Special_SniperInsideTheCrosshairs_49112_SLING.xml,./2_27_17/ 
0
Dies ist ziemlich ähnlich zu [Ihrer anderen Frage] (http://superuser.com/questions/1180074/how-to-move-files-to-specific-folders-based-on-csv-entries/1180210), nein? Ich meine, ich denke, es ist 'Kopie' und nicht 'Bewegen', aber trotzdem. bertieb vor 7 Jahren 0
Ist dies ein Windows-System oder könnte das Skript auf einen Windows-basierten Editor gestoßen sein? Stephen Rauch vor 7 Jahren 0

2 Antworten auf die Frage

0
Stephen Rauch

Sie sollten sicherstellen, dass das Verzeichnis vorhanden ist, bevor Sie versuchen, darauf zu kopieren:

#!/usr/bin/env bash IFS=',' while read OS HS do mkdir -p $HS cp -av $OS $HS done < SlingManifest.csv 
0
Alex L. Mermelstein

Ich habe das herausgefunden. Ich habe eine for-Schleife verwendet, um Textdateien für jeden Unterordner zu erstellen, und dann eine neue verschachtelte for-Schleife, um den Inhalt der Textdatei in den entsprechenden Ordner zu kopieren. Hat funktioniert.