Considere este comando:
ls /mydir/*.txt | xargs chown root
A intenção é alterar os proprietários de todos os arquivos de texto mydir
para root
O problema é que, se não houver .txt
arquivos mydir
, o xargs lança um erro dizendo que não há um caminho especificado. Este é um exemplo inofensivo porque um erro está sendo gerado, mas em alguns casos, como no script que eu preciso usar aqui, é assumido que um caminho em branco é o diretório atual. Portanto, se eu executar esse comando a partir de /home/tom/
então, se não houver resultado para ls /mydir/*.txt
e todos os arquivos abaixo /home/tom/
tiverem seus proprietários alterados para raiz.
Então, como posso xargs ignorar um resultado vazio?
git branch --merged | grep -v '^* ' | xargs git branch -d
que também falha na entrada vazia
ls
para uso programático; consulte mywiki.wooledge.org/ParsingLs