2011-01-12 6 views
1

Ich habe eine TXT-Datei mit nur Namen von Dateien darin. I.e. "999000 999008 999021" usw. Sie entsprechen Dateien, die ich mit der Erweiterung * .source.e. 999000.source 999008.source 999021.source. Diese Dateien existieren in verschiedenen Unterverzeichnissen unterhalb eines Hauptverzeichnisses. Wie würde ich die in der TXT-Datei aufgelisteten Dateien mithilfe von Linux-Befehlen in einen anderen angegebenen Ordner kopieren?Linux: Kopieren von Dateien, die in einer TXT-Datei von einem Verzeichnis (mit Unterverzeichnissen) zu einem angegebenen Ordner aufgeführt sind

Danke, Jake

+0

Haben Sie die ursprüngliche Verzeichnisstruktur im Zielverzeichnis neu erstellen müssen? –

Antwort

2

Vorausgesetzt, es gibt keine Leerzeichen in den Dateinamen sind:

(for fn in $(cat filenames.txt); do 
    find "$master_dir" -type f -name "$fn.source" 
done) |tar -cT - |(cd "$new_dir" && tar x) 
+2

Sie können vermeiden, einen zusätzlichen 'cat'-Prozess in Bash zu erzeugen:' für fn in $ ( ephemient

+1

Aber tar würde xattrs nicht kopieren, es liegt also an' cp -a $ (für fn in $ ( user562374