Linia de comandes: xargs

Xargs és una instrucció de la linia de comandes del GNU/Linux (i d'altres) que de vegades pot ser molt útil. Combinada amb una pipe (|) aprofita els arguments de la instrucció anterior. Per exemple


# ls ./* | xargs chmod +x


ls ens fa una llista els arxius d'aquest directori i en comptes de mostrar-los, amb la pipe i xargs passem aquesta llista a la instrucció chmod.

Però què passa quan aquesta llista d'arguments son rutes a arxius amb espais? Doncs que amb això no n'hi ha prou.

Hi ha un tipus de sistema operatiu que son molt habituals aquest tipus de noms, amb espais i símbols estranys. Si s'accedeisx des d'un GNU/Linux (per exemple) i es volen esborrar tots els arxius .avi (habituals en entorns corporatius ;) hauriem de fer una instrucció com aquesta:

# find * -name *.avi -print0 | xargs -0 rm

Ho he posat com a truc perquè moltes vegades no recordo la instrucció i així queda escrita.

Comentaris

I el mateix amb el find:

find * -name "*.avi" -print0 -exec rm {} ;

;)