Eu tenho um arquivo que contém nomes de arquivos. Por exemplo:
/tmp/list.txt
(é com os espaços no início de cada linha):
/tmp/file.log
/app/nir/home.txt
/etc/config.cust
Eu quero, usando uma linha, mover todos os arquivos listados /tmp/list.txt
para/app/dest
Portanto, deve ser algo como isto:
cat /tmp/list.txt | xargs mv /app/dest/
shell-script
files
rename
Nir
fonte
fonte
Supondo que os nomes dos arquivos sejam relativamente sãos (sem novas linhas ou caracteres estranhos):
Para lidar com nomes de arquivos estranhos (quebras se um nome de arquivo tiver uma nova linha):
fonte
cp -Hr
mas não sei se o OSXcp
suporta isso.fonte
Xargs puros lendo diretamente do arquivo
editar 1 - após o comentário de @Anthon abaixo,
fonte
-i
é profanado, e ele, ou seu substituto -I implica-l
/--max-lines=1
. E isso fazmv
com que seja executado para cada arquivo separadamente.(os espaços no início são ignorados)
fonte