Warum find . | cat
funktioniert es (das Drucken aller Dateinamen), aber find . | file -i
nicht das Anzeigen des MIME-Typs aller Dateien?
find .
sollte es nicht funktionieren, da es einen Ausgang von und einen Eingang von gibt file -i
?
(Tut mir leid, wenn das eine dumme Frage ist, ich bin ein Anfänger in der Verwendung von Bash und konnte keine andere Frage finden, die mir das erklären könnte.)
Antwort1
Mit einer Pipe liest der Befehl auf der rechten Seite die Daten auf seinem Standardeingabekanal. Der file
Befehl erfordert, dass die Dateien Befehlszeilenargumente sind, nicht Daten auf Standardeingabe.
Genau dafür ist der xargs
Befehl gedacht: von stdin lesen und die Daten als Kommandozeilenargumente bereitstellen:
find . | xargs file -i
Oder, verwenden Sie die -f
Option für file
:
find . | file -i -f -
Weitere Einzelheiten finden Sie in den Manpages.