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 xargs
para 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 find
as quais encontrará o primeiro arquivo (no diretório atual, recursivo) com esse nome e o copiará.