Consider this command:
ls /mydir/*.txt | xargs chown root
The intention is to change owners of all text files in mydir
to root
The issue is that if there are no .txt
files in mydir
then xargs thows an error saying there is no path specified. This is a harmless example because an error is being thrown, but in some cases, like in the script that i need to use here, a blank path is assumed to be the current directory. So if I run that command from /home/tom/
then if there is no result for ls /mydir/*.txt
and all files under /home/tom/
have their owners changed to root.
So how can I have xargs ignore an empty result?
ls
for programmatic use; see mywiki.wooledge.org/ParsingLs – Gopherwoodgit branch --merged | grep -v '^* ' | xargs git branch -d
, which also fails on empty input – Alcaeusgit branch --merged | grep -v '^* ' | xargs --no-run-if-empty git branch -d
– Elum