Wie kann ich mit einem Befehl Dateien finden und in einen nicht vorhandenen Ordner kopieren?

Wie kann ich mit einem Befehl Dateien finden und in einen nicht vorhandenen Ordner kopieren?

Zum Beispiel:

find /usr -type f -name "*.txt" -exec cp -r {} ~/txts/ \;

Funktioniert einwandfrei, wenn wir vorhandene Verzeichnis-TXTs haben.

Soweit ich das verstehe -cp hat keine Flaggenum diesen Fall zu lösen. Vielleicht sollte ich rsync oder etwas anderes verwenden?

Antwort1

Gute Frage, Sie könnten Folgendes versuchen:
Zuerst cdin /usr. Das liegt daran, dass die Verwendung eines absoluten Pfads (wie /usr) mit findmeiner Vermutung dazu führen wird, {}dass vollständige Pfade enthalten sind.

find . -type f -a -name "*.txt" -a -exec install -D {} ~/texts/{} \;

Beim Ausführen dieses Befehls erhalte ich die folgende Fehlermeldung:

find: './share/doc/google-chrome-stable': Berechtigung verweigert

Die Fehlermeldung bedeutet nicht, dass der Vorgang insgesamt fehlgeschlagen ist, sondern nur, dass findder Befehl im Verzeichnis nicht ausgeführt werden konnte ./share/doc/google-chrome-stable.
Bei mir wurden jedoch alle anderen Dateien und ihre Pfade kopiert und die Verzeichnispfade nach Bedarf erstellt.

Bei weiterer Untersuchung wurde die Fehlerursache

% ls -al --directory ./share/doc/google-chrome-stable 
drwx------ 2 root root 4096 Aug 21 12:45 ./share/doc/google-chrome-stable

verwandte Informationen