Eu uso o seguinte comando para encontrar um arquivo e copiá-lo em outro lugar,
find /search/ -name file.txt -exec cp -Rp {} /destination \;
Como posso copiar todos os arquivos e subdiretórios no diretório pai de file.txt
?
Exemplo,
/search/test/sub
/search/test/sub2
/search/test/file.txt
/search/test/file.doc
Devem ser copiados como
/destination/sub
/destination/sub2
/destination/file.txt
/destination/file.doc
Com
-execdir
(não um predicado padrão, mas frequentemente implementado), o utilitário fornecido seria executado no diretório onde o arquivo foi encontrado.Isso significa que você poderia fazer
Sem
-execdir
:ou,
Essas duas últimas variações executam um pequeno script in-line para cada arquivo encontrado. O script usa o nome do caminho do arquivo como seu primeiro argumento (em
$1
) e remove o nome do arquivo do nome do caminho usando${1%/*}
(uma substituição de parâmetro padrão). Em seguida, aplica o mesmocp
comando da primeira variação com-execdir
.O código que
cd
emula um pouco mais fielmente o que a-execdir
variação no topo realmente faz, enquanto a variação do meio ignora a alteração do diretório, referindo-se ao.
diretório de origem no final do caminho.