Gostaria de copiar um grupo de arquivos para a pasta de destino. Mas sem a necessidade de gerar uma nova instância cp
para cada operação.
O formato arg para cp
parece ser:
cp src_file1 src_file2 src_file3 dest_dir/
Supondo que eu tenha um arquivo com nomes de arquivos de origem listados linha por linha, como isso pode ser feito?
Como tenho um número muito grande de arquivos, a ideia do @Scott abaixo não funcionará, pois atingirá o comprimento máximo da linha de comando.
Eu gostaria de canalizar de alguma forma esse arquivo de nomes de arquivos cp
e deixá-lo fazer isso. xargs
também não consigo ajudar, pois deseja adicionar a expansão no final da linha de comando.
Isso pode ser feito?
Obrigado
Responder1
Se filelist
contém
apple
orange
banana
onde esses são os nomes dos arquivos que você deseja copiar para o fruity
diretório, digite
cp `cat filelist` fruity
Você não precisa do /
no final.
Aviso: isso não funcionará se algum dos nomes de arquivo contiver espaços, por exemplo, passion fruit
.
Responder2
Simular print0
de encontrar:
cat filelist |perl -p -e 's/\n/\000/' |xargs -0 cp --target-directory dest_dir/
esta amostra inclui xargs -0
,--target-directory