Considere este comando:
ls /mydir/*.txt | xargs chown root
La intención es cambiar los propietarios de todos los archivos de texto mydira raíz
El problema es que si no hay .txtarchivos en mydirxargs, 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/*.txty 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
lspara uso programático; ver mywiki.wooledge.org/ParsingLs