为什么“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

(顺便说一句,我总是在 xargs 上包含“-r”,这将阻止 xargs 在没有输入的情况下运行。否则您会得到一个令人困惑的空行。)

相关内容