Ich habe einen Ordner mit einer großen Menge an Dateien mit unterschiedlichen Suffixen in mehreren Unterordnern.
Mein Automator-Workflow funktioniert wie folgt:
Das funktioniert wie ein Zauber. Alle Dateien werden jedoch in denselben Stammzielordner kopiert. Ich muss die Unterordnerstruktur beibehalten. Zum Beispiel:
sourceFolder
subfolderA
fileA.jpg
fileB.xls
fileC.xls
subfolderB
fileC.jpg
fileD.xls
fileE.xls
Erwartetes Ergebnis (Filter für Dateiendung .xls):
destinationFolder
subfolderA
fileB.xls
fileC.xls
subfolderB
fileD.xls
fileE.xls
Aktuelles Ergebnis:
destinationFolder
fileB.xls
fileC.xls
fileD.xls
fileE.xls
Aktualisieren
Ich bin Entwickler. Also wird auch eine Shell oder AppleScript akzeptiert. :)
rsync -avh --include='*/' --include='*.xls' --exclude='*' path/to/sourceFolder/ path/to/destinationFolder
Beachten Sie /
am Ende des Quellpfads, es ist wichtig . Diese Lösung würde alle leeren Verzeichnisse hinzufügen, wenn Sie sie nicht möchten, sehen Sie sich die Option an --prune-empty-dirs
.
Mit der geschweiften Erweiterung können Sie tatsächlich mehr Dateitypen auf einmal einschließen, anstatt sie zu haben
--include='*.xls' --include='*.pdf' --include='*.txt'
Sie können verwenden
--include='*.'{xls,pdf,txt}
Am Ende habe ich ein Shell-Skript, das wie gewünscht funktioniert:
$ find ./sourceFolder -name "*.xls*" -type f -print0 | xargs -0 -I '{}' /usr/bin/rsync -avR "{}" "./destinationFolder/"
rsync -avh --include='*/' --include='*.xls' --exclude='*' sourceFolder/ destinationFolder
? Mit der geschweiften Erweiterung können Sie tatsächlich mehr Dateitypen einbeziehen --include='*.'{xls,pdf,txt}
.rsync
einmal mit den entsprechenden Flags aufrufen.In einem Shell-Skript können Sie mkbom verwenden, um eine BOM-Datei (Stückliste) zu erstellen, die eine Liste von Dateien enthält, die Sie kopieren möchten. Dann können Sie den Befehl ditto mit der Option --bom verwenden, um nur die Dateien zu kopieren, die in der BOM-Datei aufgeführt sind.
Tino Rüb
Manuel
.xls
Dateien ein und schließen Sie dann alles andere aus. Wenn Sie mehr Dinge möchten,--delete
fügen Sie sie Ihrem Befehl hinzu.