Xargs
Última modificació: abril de 2019
Ens trobem que hi han instruccions que no accepten que se'ls passin coses amb pipes. Per a aquests casos tenim xargs, que el que fa es agafar el que li arriba del pipe i l'enganxa al final de la instrucció que te a la dreta. Exemple:
-Esborrar tots els fitxers .tmp amb xargs i rm (que no accepta pipes):
find . -name "*.txt" | xargs rm -rf
Aquest exemple funcionaria si els fitxers no continguessin espais en el seu nom. Exemple:
find . -name "*.txt" -print0 | xargs -0 ls
ls: no s’ha pogut accedir a './hola': El fitxer o directori no existeix
ls: no s’ha pogut accedir a '.txt': El fitxer o directori no existeix
Una manera de solucionar aquest problema és sortir amb print0, i passar-li a xargs, escollint només el primer argument de sortida de xargs:
find . -name "*.txt" -print0 | xargs -0 ls
'./hola .txt' ./hola2.txt ./hola3.txt
El paràmetre de -n serveix per especificar el número màxim de entrades a acumular abans d'executar el comandament especificat. Un exemple:
echo això és una demo del flag -n de xargs | xargs -n3
això és una
demo del flag
-n de xargs