Por que o comando 'xargs' não funciona com figlet, mas funciona bem quando eu o executo com o argumento 'ls'

Por que o comando 'xargs' não funciona com figlet, mas funciona bem quando eu o executo com o argumento 'ls'

Por exemplo:

  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
    

O primeiro comando gera uma saída, mas o segundo não. Qual é a razão por trás disso?

Responder1

Vou tentar uma resposta:

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

Isso será executadoumcomando figlet comumnome do arquivo e outro comando figlet com outro nome de arquivo e assim por diante.

Veja por exemplo a diferença entre

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

e

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

(A propósito, eu sempre incluo '-r' em xargs, o que impedirá a execução de xargs se não houver entrada. Caso contrário, você obterá uma linha vazia confusa.)

informação relacionada