Warum funktioniert der Befehl „xargs“ nicht mit Figlet, aber einwandfrei, wenn ich ihn mit dem Argument „ls“ ausführe?

Warum funktioniert der Befehl „xargs“ nicht mit Figlet, aber einwandfrei, wenn ich ihn mit dem Argument „ls“ ausführe?

Zum Beispiel:

  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
    

Der erste Befehl erzeugt eine Ausgabe, der zweite jedoch nicht. Was ist der Grund dafür?

Antwort1

Ich versuche mal eine Antwort:

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

Dies wird ausgeführteinsFiglet-Befehl miteinsDateiname und ein anderer Figlet-Befehl mit einem anderen Dateinamen und so weiter.

Sehen Sie zum Beispiel den Unterschied zwischen

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

Und

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

(Übrigens füge ich bei xargs immer „-r“ ein, wodurch verhindert wird, dass xargs ausgeführt wird, wenn keine Eingabe vorhanden ist. Andernfalls erhalten Sie eine verwirrende leere Zeile.)

verwandte Informationen