Eu gostaria de copiar os arquivos pesquisados pelo comando find
para o diretório atual
# find linux books
find ~ -type f -iregex '.*linux.*\.pdf' -print0 | xargs -0 echo
# the result
../Books/LinuxCollection/Linux_TLCL-17.10.pdf ../Richard Blum, Christine Bresnahan - Linux Command Line and Shell Scripting Bible, 3rd Edition - 2015.pdf ..
Teste para copiar os arquivos para o diretório atual usando o comando `cp'
find ~ -type f -iregex '.*linux.*\.pdf' -print0 | xargs -0 cp .
Obter erro:
usage: cp [-R [-H | -L | -P]] [-fi | -n] [-apvXc] source_file target_file
cp [-R [-H | -L | -P]] [-fi | -n] [-apvXc] source_file ... target_directory
Eu resolvo o problema com a substituição de comando
cp $(find ~ -type f -iregex '.*linux.*\.pdf' -print0) .
Como realizá-lo com xargs
?
Como o
cp
erro indica, o diretório de destino deve vir por último. Como parece que o seucp
não possui um equivalente à opção do GNUcp
,-t
você deve obter xargs para inserir o nome do arquivo entrecp
e.
:where
-I
é usado para dizer qual string deve ser substituída pela entrada (neste caso, estou usando_
, embora{}
também seja comumente usado).Claro, isso pode ser feito com
find
ele mesmo: