In der UNIX-Bash-Shell (speziell Mac OS X Leopard) wäre das einfachste Verfahren, jede Datei mit einer bestimmten Erweiterung aus einer Ordnerhierarchie (einschließlich Unterverzeichnissen) in denselben Zielordner zu kopieren (ohne Unterordner)?Unix-Shell-Datei-Copy-Flattening-Ordnerstruktur
Offensichtlich gibt es das Problem von Duplikaten in der Quellhierarchie. Ich hätte nichts dagegen, wenn sie überschrieben werden.
Beispiel: Ich brauche jede TXT-Datei in der folgenden Hierarchie
/foo/a.txt
/foo/x.jpg
/foo/bar/a.txt
/foo/bar/c.jpg
/foo/bar/b.txt
Um einen Ordner mit dem Namen 'dest' zu kopieren und erhalten:
/dest/a.txt
/dest/b.txt
-exec cp -t dest/{} + wird schneller sein, weil es cp nur einmal mit mehreren Argumenten ausführen muss. -t steht für --target-Verzeichnis. -l kann hier nützlich sein, um Hardlinks zu machen. stattdessen. Und vielleicht -u, um mit der neuesten Version für jeden Dateinamen zu enden, anstatt den ersten zu finden. –
Allgemeine Bash-Frage hier ... ist {} spezifisch zu finden oder ist das ein Weg, einen Piped-Wert darzustellen? –
@BrianBolton '{}' ist spezifisch für 'find' –