J'ai un fichier qui contient des noms de fichiers. Par exemple:
/tmp/list.txt
(c'est avec les espaces au début de chaque ligne):
/tmp/file.log
/app/nir/home.txt
/etc/config.cust
Je veux, en utilisant la ligne d'un, pour déplacer tous les fichiers répertoriés dans /tmp/list.txt
la/app/dest
Donc, ça devrait être quelque chose comme ça:
cat /tmp/list.txt | xargs mv /app/dest/
En supposant que les noms de vos fichiers sont relativement sains d'esprit (pas de sauts de ligne ou de caractères étranges):
Pour gérer les noms de fichiers étranges (casse si un nom de fichier a une nouvelle ligne):
la source
cp -Hr
mais je ne sais pas si OSXcp
prend en charge cela.la source
Xargs purs lisant directement à partir du fichier
modifier 1 - après le commentaire de @Anthon ci-dessous,
la source
-i
est obsolète, et il, ou son remplacement -J'implique-l
/--max-lines=1
. Et il provoquemv
à être exécuté pour chaque fichier séparément.(les espaces au début sont ignorés)
la source