Voici trois possibilités qui pourraient vous convenir :
1. BSD xargs
Cette fonction est intégrée à MacOS, mais vous devrez citer les noms de fichiers dans votre fichier list-of-files
$ more list-of-files
'file1'
'file2'
'file 3'
'file 4'
note : J'ai ajouté le -t
afin d'afficher la commande générée avant qu'elle ne s'exécute.
$ cat list-of-files | xargs -t -I {} echo "{}"
echo file1
file1
echo file2
file2
echo file 3
file 3
echo file 4
file 4
2. GNU xargs
GNU xargs n'est pas installé par défaut sur MacOS, mais peut l'être via homebrew (dans le paquetage findutils).
brew install findutils
L'utilisation de GNU xargs via homebrew ne nécessite pas de citer les noms de fichiers et donne le même résultat que l'utilisation de BSD xargs et la citation des noms de fichiers (option 1, ci-dessus).
3. trouver (au lieu de list-of-files
)
Plutôt que d'utiliser un fichier pour vos entrées, utilisez la fonction find
commande. Quelque chose comme ce qui suit devrait fonctionner :
$ ls -laF file*
-rw-r--r-- 1 sfederman staff 0 Jun 7 22:53 file 4
-rw-r--r-- 1 sfederman staff 0 Jun 7 22:53 file 3
-rw-r--r-- 1 sfederman staff 0 Jun 7 22:53 file1
-rw-r--r-- 1 sfederman staff 0 Jun 7 22:53 file2
$ find . -name "file*" | xargs -0 -I {} echo "{}"
./file 4
./file 3
./file1
./file2
Ou en évitant complètement xargs :
$ find . -name "file*" -exec echo "{}" \;
./file 4
./file1
./file2
./file 3