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