Localizando e copiando arquivos no Terminal

0

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

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

Eu quero que estes 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 bem!
Mas agora eu quero expandir essa funcionalidade.
Primeiro de tudo, 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 pesquisasse em uma determinada pasta e em suas subpastas o arquivo "0001.pdf".

Meu conhecimento do Terminal é muito limitado a esse script, só para vocês saberem.
Espero que alguém possa me ajudar, e muito obrigado antecipadamente!

    
por Hans Gravekamp 12.11.2015 / 11:11

1 resposta

4

Você pode usar xargs para citar cada linha.

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

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

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

Ele passará linhas sucessivas para find , que encontrará o primeiro arquivo (no diretório atual, recursivo) com esse nome e o copiará.

    
por Oli 12.11.2015 / 11:42