Einführung
Die Linux-file
Der Befehl hilft, den Typ einer Datei und ihrer Daten zu bestimmen. Der Befehl berücksichtigt die Dateierweiterung nicht und führt stattdessen eine Reihe von Tests durch, um den Typ der Dateidaten zu ermitteln.
In diesem Tutorial zeigen wir Ihnen, wie die file
Befehl funktioniert und wie man ihn benutzt.

Voraussetzungen
- Ein System, auf dem Linux ausgeführt wird.
- Zugriff auf das Terminalfenster.
Dateibefehlssyntax
Die file
Der Befehl verwendet die folgende grundlegende Syntax:
file [option] [file name]
In der obigen Syntax file name
stellt den Namen der Datei dar, die Sie testen möchten. Die file
Der Befehl führt drei Testreihen durch, um den Dateityp in dieser Reihenfolge zu bestimmen:
- Dateisystemtests einen stat(2)-Systemaufruf durchführen und das Ergebnis mit der System-Header-Datei vergleichen. Auf diese Weise wird die
file
bestimmt, ob die Datei ein allgemeiner Typ für Ihr System ist (z. B. eine Textdatei, ein Bild, ein Verzeichnis usw.). - Magische Tests Verwenden Sie eine kurze Zahlenfolge, die am Anfang der Datei gespeichert ist ("magische Zahl"), um zu testen, ob die Datei eine binäre ausführbare Datei ist, und wenn ja, bestimmen Sie ihren Typ. Die zur Durchführung dieser Tests erforderlichen Informationen werden in /etc/magic gespeichert oder /usr/share/misc/magic aus einer kompilierten magischen Datei.
- Sprachtests Verwenden Sie ein spezielles Tag, um zu bestimmen, in welcher Programmiersprache eine ausführbare Binärdatei geschrieben ist.
Die Befehlsausgabe enthält eine kurze Beschreibung der Datei und des Datentyps. Verwenden Sie zum Beispiel die file
Befehl zum Testen einer Textdatei:
file example.txt

Dateibefehlsoptionen
Die file
Befehl verwendet die folgenden Optionen:
Option | Beschreibung |
---|---|
--apple | Ändert die Befehlsausgabe auf die, die von älteren Versionen von MacOS verwendet wird. |
-b, --brief | Ändert die Befehlsausgabe in den Kurzmodus. |
-C, --compile | Erstellt eine Ausgabedatei, die eine vorgeparste Version der Magic-Datei oder des Verzeichnisses enthält. |
-c, --checking-printout | Überprüft den Ausdruck auf die geparste Version der magischen Datei. |
-d | Druckt interne Debugging-Informationen im Standardfehlerformat. |
-E | Bei Dateisystemfehler wird eine Fehlermeldung ausgegeben und beendet. |
-e, --exclude | Schließt einen Test aus der Liste der für eine Datei durchgeführten Tests aus. |
--exclude-quiet | Schließt Tests aus, die die file Befehl weiß nichts über. |
--extension | Druckt eine Liste gültiger Erweiterungen für den Dateityp. |
-F, --separator | Verwendet die angegebene Zeichenfolge als Trennzeichen zwischen Dateiname und Dateityp. |
-f, --files-from | Verwendet eine bereitgestellte Textdatei als Liste der zu testenden Dateien. Die Liste darf nur einen Dateinamen pro Zeile enthalten. |
-h, --no-deference | Deaktiviert folgende symbolische Links. |
-i, --mime | Ändert die Befehlsausgabe in eine Zeichenfolge vom MIME-Typ. |
--mime-type, --mime-encoding | Ändert die Befehlsausgabe in eine Zeichenfolge vom MIME-Typ und zeigt nur das angegebene Element (Typ oder Kodierung) an. |
-k, --keep-going | Hält den Test nach der ersten Ergebnisübereinstimmung am Laufen. |
-l, --list | Zeigt eine Liste übereinstimmender Muster in absteigender Stärke. |
-L, --deference | Ermöglicht das Folgen symbolischer Links. |
-m, --magic-file | Verwendet eine alternative magische Datei, die vom Benutzer bereitgestellt wird. |
-N, --no-pad | Füllt die Dateinamen nicht auf, um sie an der Ausgabe auszurichten. |
-n, --no-buffer | Leert die Ausgabe nach dem Prüfen jeder Datei. |
-p, --preserve-date | Versucht, den letzten Zugriff auf die Datei beizubehalten, damit sie wie die file aussieht Befehl hat es nicht getestet. |
-P, --parameter | Legt verschiedene Parameter fest, wie z. B. maximale Bytes oder Rekursion, Anzahl und Längenbegrenzung. |
-r, --raw | Deaktiviert die Übersetzung nicht druckbarer Zeichen. |
-s, --special-files | Ermöglicht das Lesen spezieller Dateien. |
-S, --no-sandbox | Deaktiviert Sandboxing auf Systemen, die es unterstützen. |
-v, --version | Zeigt die Version der file an Befehl. |
-z, --uncompress | Überprüft komprimierte Dateien. |
-Z, --uncompress-noreport | Überprüft komprimierte Dateien und zeigt nur den Dateityp ohne Komprimierung an. |
-0, --print0 | Zeigt ein Nullzeichen nach dem Ende des Dateinamens an. |
--help | Zeigt die Hilfemeldung an. |
Beispiele für Dateibefehle
Nachfolgend finden Sie Beispiele für häufige Anwendungsfälle für die file
Befehl.
Mehrere Dateien testen
Um mehrere Dateien gleichzeitig zu testen, hängen Sie die Dateinamen an das Ende der file
an Befehl:
file [file name 1] [file name 2] … [file name n]
Testen Sie beispielsweise ein Verzeichnis, eine Textdatei, ein Bild und eine Webseite:
file Example example.txt sample.png index.html

Alle Dateien in einem Verzeichnis testen
Fügen Sie ein Platzhalterzeichen hinzu (*
) in die file
Befehl zum Testen aller Dateien und Verzeichnisse im aktuellen Arbeitsverzeichnis:
file *

Fügen Sie dem Platzhalterzeichen den Pfad zu einem Verzeichnis hinzu, um den Inhalt dieses Verzeichnisses zu testen:
file [path to directory]/*
Zum Beispiel, um den Inhalt des Beispiels zu testen Verzeichnis, verwenden Sie:
file Example/*

Testdateien in einem Bereich
Die file
Mit dem Befehl können Sie eine Teilmenge von Dateien in einem Verzeichnis mithilfe von Bereichen im Regex-Stil testen. Wählen Sie einen Bereich aus, indem Sie die Werte in Klammern setzen. Zum Beispiel das Testen von Dateien und Verzeichnissen mit Namen im a-l-Bereich:
file [a-l]*

Da bei Bereichen im Regex-Stil zwischen Groß- und Kleinschreibung unterschieden wird, zeigt die Ausgabe im obigen Beispiel nur Dateitypen für Dateien, die mit den Kleinbuchstaben a-l beginnen. Wenn Sie einen weiteren Bereich hinzufügen, können Sie auch Großbuchstaben einbeziehen:
file [a-l]* [A-L]*

Dateien aus einer Liste testen
Die file
Mit dem Befehl können Sie eine Textdatei als Liste der zu testenden Dateien verwenden. Die Textdatei darf nur einen Dateinamen pro Zeile enthalten.

Verwenden Sie das -f
Option und fügen Sie den Pfad zur Listendatei zu file
hinzu Befehl:
file -f list.txt

Spezielle Dateien testen
Die file
Der Befehl ist nicht immer in der Lage, spezielle Dateien wie Systemdateien zu lesen:
file /dev/sda5

Im obigen Beispiel zeigt die Ausgabe des Dateibefehls, dass /dev/sda5 ist eine spezielle Blockdatei, bietet aber keine zusätzlichen Details. Mit dem -s
Mit dieser Option können Sie spezielle Dateien vollständig testen:
sudo file -s /dev/sda5

Komprimierte Dateien testen
Verwenden Sie das -z
Option, um komprimierte Dateien vollständig zu testen und zu versuchen, ihren Inhalt zu erkennen:
file -z install.tar.gz

Geparste Version der Datei testen
Mit -c
Option zeigt den Prüfausdruck für die geparste Version der Datei an:
file -c example.txt

Diese Option wird normalerweise mit -m
verwendet Option zum Debuggen und Installieren einer neuen magischen Datei.
Kurze Ausgabe anzeigen
Mit -b
Option zeigt die Kurzversion der Ausgabe an. Diese Version der Ausgabe zeigt nur Dateitypen und lässt Dateinamen weg.
file -b Example example.txt sample.png index.html

Trennzeichen zur Ausgabe hinzufügen
Mit -F
Mit der Option können Sie ein Zeichen definieren, das als Trennzeichen zwischen den Abschnitten Dateiname und Dateityp der Ausgabe dient. Fügen Sie beispielsweise ein Pluszeichen hinzu (+
) als Trennzeichen mit:
file -F + Example example.txt sample.png index.html

Dateinamen-Padding aus der Ausgabe entfernen
Verwenden Sie das -N
Option, um die Auffüllung zwischen den Abschnitten Dateiname und Dateityp der Ausgabe zu entfernen:
file -N Example example.txt sample.png index.html
Die resultierende Ausgabe ist nicht mehr vertikal ausgerichtet:
