Почему команда «xargs» не работает с figlet, но работает нормально, когда я запускаю ее с аргументом «ls»

Почему команда «xargs» не работает с figlet, но работает нормально, когда я запускаю ее с аргументом «ls»

Например:

  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
    

Первая команда генерирует вывод, а вторая нет. В чем причина этого?

решение1

Я попытаюсь ответить:

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

Это будет работатьодинкоманда figlet содинимя файла и еще одна команда figlet с другим именем файла и т. д.

Посмотрите, например, разницу между

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

и

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

(Кстати, я всегда включаю '-r' в xargs, что предотвратит запуск xargs при отсутствии входных данных. В противном случае вы получите сбивающую с толку пустую строку.)

Связанный контент