Как игнорировать команды xargs, если вход stdin пуст?

Рассмотрим эту команду:

ls /mydir/*.txt | xargs chown root

Цель - изменить владельцев всех текстовых файлов в mydir на root

Проблема в том, что если в .txt нет файлов в mydir, то xargs выдаст ошибку, говоря, что путь не указан. Это безобидный пример, потому что выдается ошибка, но в некоторых случаях, как в сценарии, который мне нужно использовать здесь, пустой путь принимается за текущий каталог. Так что если я запущу эту команду из /home/tom/, то если нет результата для ls /mydir/*.txt и все файлы под /home/tom/ имеют владельцев, измененных на root.

Так как я могу заставить xargs игнорировать пустой результат?

168
задан Ciro Santilli 新疆改造中心法轮功六四事件 29 May 2018 в 11:03
поделиться