A partire dalla risposta di @Joseph R., questa è la mia soluzione per farlo funzionare con find, poiché non ho potuto far funzionare il suo comando. (Non credo, a causa delle regole che si applicano a \+
: non può esserci nulla dopo l' {}
elemento.) (Non ho potuto commentare. L'intero paragrafo può essere effettivamente rimosso.)
Per copiare tutti i file nella stessa identica directory (qui target/directory
):
find directory/to/copy -type f -exec install -Dm 755 "{}" "target/directory" \;
-D
non è obbligatorio qui, creerà semplicemente le directory non esistenti sulla destinazione.
Per copiare un'intera gerarchia di directory e i suoi file (questo ometterà le directory vuote) a partire da dove ti trovi attualmente:
find directory/tree/to/copy -type f -exec install -Dm 755 "{}" "target/directory/{}" \;
Come detto, questo ricrea l'albero a partire da $PWD
. Inoltre, se è necessario copiare la directory vuota, su potrebbe trovare un modo utilizzando il -type d
di find
e install -d
.
Quindi, per copiare l'albero, partendo da una directory che non è $PWD
:
(cd parent/directory && find directory/tree/to/copy -type f -exec install -Dm 755 "{}" "target/directory/{}" \;)
Nota come parent/directory
non viene copiato.
Extra
Per quelli che usano shell/fish
, ecco la linea che fa lo stesso:
fish -c 'cd parent/directory; and find directory/tree/to/copy -type f -exec install -Dm 755 "{}" "target/directory/{}" \\;'