Considere este comando:
ls /mydir/*.txt | xargs chown root
La intención es cambiar los propietarios de todos los archivos de texto mydir
a raíz
El problema es que si no hay .txt
archivos en mydir
xargs, aparece un error que indica que no hay una ruta especificada. Este es un ejemplo inofensivo porque se está generando un error, pero en algunos casos, como en el script que necesito usar aquí, se supone que una ruta en blanco es el directorio actual. Entonces, si ejecuto ese comando desde /home/tom/
entonces, si no hay ningún resultado ls /mydir/*.txt
y todos los archivos bajo /home/tom/
tienen sus propietarios cambiados a root.
Entonces, ¿cómo puedo hacer que xargs ignore un resultado vacío?
git branch --merged | grep -v '^* ' | xargs git branch -d
, que también falla en la entrada vacía
ls
para uso programático; ver mywiki.wooledge.org/ParsingLs