
Ich habe mich also umgesehen und nur herausgefunden, wie das geht, wenn das Verzeichnis bereits erstellt ist, und zwar so:
find source -name '*.z' -exec cp {} destination \;
Aber wie kann ich mit demselben Befehl ein neues Verzeichnis erstellen, in das ich diese Dateien senden möchte? Folgendes habe ich versucht, aber ohne Erfolg:
find source -name '*.z' -exec cp {} | mkdir newDirectory \;
Antwort1
Eine Möglichkeit besteht darin, den install
Befehl anstelle von zu verwenden cp
. Er bietet die Möglichkeit, alle führenden Verzeichnisse zu erstellen.
find source -name '*.z' -exec install -D {} dest \;
Antwort2
DuDaten können nicht weitergeleitet werdenauf mkdir
diese Weise. Sie könnten so etwas tun:
find source -name '*.z' -exec sh -c 'mkdir -p newDirectory && cp "$@" newDirectory' _ {} +
oder (vorausgesetzt, die Dateinamen enthalten keine Zeilenumbrüche)
find source -name '*.z' | while IFS= read -r foo; do
mkdir -p newDirectory;
cp "$foo" newDirectory;
done
oder wenn Sie nur ein Verzeichnis anlegen möchten, sodass der Name immer derselbe ist:
mkdir newDirectory; find source -name '*.z' -exec cp {} newDirectory \;