たとえば、
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
find /usr/share/figlet/ -type f -name "*.flf" | xargs figlet -f
最初のコマンドは出力を生成しますが、2番目のコマンドは出力を生成しません。その理由は何ですか?
答え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が入力なしで実行されるのを防ぐことができます。そうしないと、混乱した空白行が表示されます。)