Kopieren Sie eine Datei aus dem Quellverzeichnis in das Zielbasisverzeichnis und behalten Sie den Quellpfad bei

Kopieren Sie eine Datei aus dem Quellverzeichnis in das Zielbasisverzeichnis und behalten Sie den Quellpfad bei

Verzeihen Sie mir, ich verwende wahrscheinlich nicht die richtigen Begriffe zur Beschreibung des Problems und verstehe die grundlegendste Verwendung einiger gängiger Befehle falsch.

Ich habe eine einfache Find-Anweisung, die Dateien sucht, die ich kopieren möchte. Ich möchte -exec cp {} anhängen und cp die Datei aus dem Quellverzeichnis in ein neues Basisverzeichnis kopieren lassen, aber den vollständigen Pfad angeben. Beispiel:

  • find . -name *.txtlokalisiert/user/username/projects/source.txt
  • cp {} [now what?]kopiert die Datei nach/user/newuser/projects/source.txt

Antwort1

rsync -rlpv --files-from=<(find ...) /user/username/projects /user/newuser

Antwort2

Wenn Sie sicher sein können, dass alle Unterverzeichnisse vorhanden sind, ist dies eine interessante Option:

cd /user/username/
find . -name \*.gz | sed 's/\.\(.*\)/.\1 ..\/newuser\1/' | xargs -n2 cp

verwandte Informationen