Encontrar e copiar arquivos no Terminal

Encontrar e copiar arquivos no Terminal

Eu tenho um arquivo .txt (chamado list.txt) contendo uma lista de nomes de arquivos, incluindo seus caminhos. Como:

/Users/Me/Downloads/0001.pdf
/Users/Me/Downloads/0010.pdf
/Users/Me/Downloads/0053.pdf
etc.

Quero que eles sejam copiados para uma pasta na minha área de trabalho chamada "nova pasta". Eu uso este script no Terminal para fazer isso:

cp `cat /Users/Me/Desktop/list.txt` /Users/Me/Desktop/new-folder/

E isso funciona gastadamente!
Mas agora quero expandir essa funcionalidade.
Em primeiro lugar, não funciona se os caminhos contiverem espaços, o que não é muito prático.
Em segundo lugar, nem sempre tenho certeza dos caminhos. Gostaria que o Terminal procurasse em uma determinada pasta e suas subpastas o arquivo chamado "0001.pdf".

Meu conhecimento do Terminal é praticamente limitado a este script, só para vocês saberem.
Espero que alguém possa me ajudar e desde já muito obrigado!

Responder1

Você pode usar xargspara citar cada linha.

xargs -a list.txt -I% cp "%" destination/

Seu segundo requisito não é muito prático, mas assumindo que list é apenas uma lista de nomes de arquivos, algo assim poderia funcionar:

xargs -a list.txt -L1 -I% find -name "%" -exec cp {} destination/ \; -quit

Passará linhas sucessivas para findas quais encontrará o primeiro arquivo (no diretório atual, recursivo) com esse nome e o copiará.

informação relacionada