¿Por qué el comando 'xargs' no funciona con figlet pero funciona bien cuando lo ejecuto con el argumento 'ls'?

¿Por qué el comando 'xargs' no funciona con figlet pero funciona bien cuando lo ejecuto con el argumento 'ls'?

Por ejemplo:

  1. find /usr/share/figlet/ -type f -name "*.flf" | xargs ls -l
    
    -rwxr-xr-x 1 root root  3369 Mar 31 17:54 /usr/share/figlet/Tombstone.flf
    -rwxr-xr-x 1 root root  7641 Mar 31 17:54 /usr/share/figlet/Train.flf
    -rwxr-xr-x 1 root root  8336 Mar 31 17:54 /usr/share/figlet/Trek.flf
    -rwxr-xr-x 1 root root  9363 Mar 31 17:54 /usr/share/figlet/Tubular.flf
    -rwxr-xr-x 1 root root 15484 Mar 31 17:54 /usr/share/figlet/Univers.flf
    -rwxr-xr-x 1 root root  6644 Mar 31 17:54 /usr/share/figlet/usaflag.flf
    
  2. find /usr/share/figlet/ -type f -name "*.flf" | xargs figlet -f
    

El primer comando genera una salida pero el segundo no. Cuál es la razón detrás de esto?

Respuesta1

Voy a intentar una respuesta:

find /usr/share/figlet/ -type f -name "*.flf" | xargs -n 1 figlet -f

Esto se ejecutaráunocomando figlet conunonombre de archivo y otro comando figlet con otro nombre de archivo, y así sucesivamente.

Véase por ejemplo la diferencia entre

find /usr/share/figlet/ -type f -name "*.flf" | xargs -t ls -l

y

find /usr/share/figlet/ -type f -name "*.flf" | xargs -t -n 1 ls -l

(Por cierto, siempre incluyo '-r' en xargs, lo que evitará que xargs se ejecute si no hay entrada. De lo contrario, obtendrás una línea vacía confusa).

información relacionada