Considérez cette commande:
ls /mydir/*.txt | xargs chown root
L'intention est de changer les propriétaires de tous les fichiers texte en mydir
root
Le problème est que s'il n'y a pas de .txt
fichiers, mydir
xargs génère une erreur indiquant qu'aucun chemin n'est spécifié. Ceci est un exemple inoffensif car une erreur est générée, mais dans certains cas, comme dans le script que je dois utiliser ici, un chemin vide est supposé être le répertoire actuel. Donc, si j'exécute cette commande à partir de /home/tom/
là, s'il n'y a pas de résultat pour ls /mydir/*.txt
et que tous les fichiers sous /home/tom/
ont leurs propriétaires changés en root.
Alors, comment puis-je faire ignorer un résultat vide par xargs?
git branch --merged | grep -v '^* ' | xargs git branch -d
, qui échoue également sur une entrée vide
ls
pour une utilisation programmatique; voir mywiki.wooledge.org/ParsingLs