xargs est une commande UNIX puissance qui permet de récupérer les arguments passés par la commande précédante. Il permet d'éviter des structures lourdes comme :
[commande] | while read param do [traitement] done
A la place, nous avons quelque chose de plus simple, de plus condensé :
[commande] | xargs [traitement]
Copier la liste des fichiers .txt dans un répertoire :
ls -1 ${repertoire_source}/*.txt | xargs -i -t cp {} ${repertoire_cible}
Copier la liste des fichiers .txt dans un répertoire cible depuis un répertoire relatif :
ls -1 ${repertoire_source}/*.txt | xargs -i -t cp {} ${repertoire_cible}
Renommer tous les fichiers *.txt d'un répertoire :
ls -1 ${repertoire}/*.txt | xargs -i -t mv {} {}.csv
Supprimer tous les fichiers *.txt d'un répertoire :
ls -1 ${repertoire}/*.txt | xargs rm -f
La commande basename n'apprécie pas trop les files. Pour remédier à ce problème, après un ls, par exemple, il faut :
ls -1 ${repertoire}/*.txt | xargs basename