Considera questo comando:
ls /mydir/*.txt | xargs chown root
L'intenzione è di cambiare i proprietari di tutti i file di testo in mydir
root
Il problema è che se non ci sono .txt
file in mydir
allora xargs genera un errore che dice che non è stato specificato alcun percorso. Questo è un esempio innocuo perché viene generato un errore, ma in alcuni casi, come nello script che devo usare qui, si presume che un percorso vuoto sia la directory corrente. Quindi se eseguo quel comando da /home/tom/
allora se non ci sono risultati per ls /mydir/*.txt
e tutti i file sotto /home/tom/
hanno i loro proprietari cambiati in root.
Quindi, come posso fare in modo che xargs ignori un risultato vuoto?
git branch --merged | grep -v '^* ' | xargs git branch -d
, che fallisce anche con input vuoto
ls
per uso programmatico; vedi mywiki.wooledge.org/ParsingLs