"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가 입력 없이 실행되는 것을 방지할 수 있습니다. 그렇지 않으면 혼란스러운 빈 줄이 표시됩니다.)

관련 정보