Ich ls
weiß nicht , ob eine Dateitypspalte angezeigt werden kann.
Eine schnelle Online-Suche und die Suche nach man
haben eine solche Funktion nicht ergeben. Ist es dazu in der Lage?
Erläuterung: Dies ist besonders hilfreich, wenn Dateien keine Erweiterung haben.
Aktualisieren
Ab dem 28.04.2018 waren die Antworten recht interessant, lieferten jedoch nicht das, wonach ich suchte. Genauer,
file
gibt die tatsächlichen Dateitypen an, lässt sich aber nicht gut integrierenls
. Insbesondere benutze ichls -lhtrpG --group-directories-first --color=always
ls -F
ist einels
Lösung, bietet jedoch Symbole, keine Spalte der tatsächlichen Dateitypen.
Aus diesem Grund habe ich keine der Antworten als die Antwort markiert, nach der ich suche.
command-line
ls
user10853
quelle
quelle
ls -lahtrpF --group-directories-first --color=always /dev
oderls -lsahG /dev
und für Programme lesbarls -lsa /dev
.man ls
Einzelheiten finden Sie in der Dokumentation.Antworten:
file
ist definitiv die richtige Wahl, um die gewünschten Dateitypinformationen zu erhalten. Um seine Ausgabe mit der von zu kombinieren,ls
schlage ich vor, Folgendes zu verwendenfind
:Dadurch wird jede Datei im aktuellen Verzeichnis gefunden und die Ausgabe
ls -dils
sowie die Ausgabefile -b
für jede Datei in einer eigenen Zeile gedruckt . Beispielausgabe:Aber, wie Sie nicht über eine Datei des Typs wollen Linie , sondern eine Datei des Typs Spalte , hier ist eine Art und Weise des Newline - Zeichen zwischen den Zeilen zu befreien:
Beispielausgabe:
Diese neue Spalte ist ziemlich lang, also lassen Sie uns alles vom ersten Komma abschneiden:
Die Ausgabe davon sieht folgendermaßen aus:
Das ist nicht ganz praktisch, also wie wäre es mit einem
alias
? Mit der folgenden Zeile in Ihrer~/.bash_aliases
Datei müssen Sie nur ausführenlsf
, um die obige Ausgabe für das aktuelle Verzeichnis zu erhalten.quelle
paste
oder verwendencolumn
, können Sie eine bessere Ausrichtung erzielen:lsf () { find -maxdepth 1 -type f -exec bash -c 'column <(ls -l "$@") <(file -b "$@" | cut -d, -f1)' _ {} + ; }
Das Ausrichtungsproblem ist in der Antwort aufgrund der ähnlichen Größen und Daten nicht ersichtlich. (Dies wird auch etwas schneller sein, da die Befehle weniger statt einmal pro Datei aufgerufen werden.)column
Ansatz für Sie? Es druckt nur die Ausgabels -l
für jede Datei, gefolgt vonfile
der Ausgabe für jede Datei für mich, als ob die Shell nur tun würdels -l "$@"; file -b "$@" | cut -d, -f1
.../etc
.column
die Ausgabe nicht an das Terminal erfolgt, müssen Sie die Spaltenanzahl angeben, sonst werden die Dateien nacheinander ausgegeben. socolumn -c "$COLUMNS" ...
sollte in jedem Fall arbeiten.Ich denke, der beste Weg, um einen Dateityp anzuzeigen, ist die Verwendung dieses Befehls:
Wenn Sie die Typen aller Dateien in einem Verzeichnis auflisten möchten, verwenden Sie einfach:
Weitere Einzelheiten zu den Argumenten finden Sie unter:
quelle
mime type
einzigen, zu verwenden:file --mime-type filename
.file
ziemlich gut ab, aber diese Frage ist anders.file
Antwort gegeben haben. Da ich den anderen geantwortet habe, reicht dies nicht aus (es muss in ls integriert werden), also halte ich es bei einer Abstimmung. Vielen Dank.file --mime /dev/*
fürZur Verdeutlichung möchte ich darauf hinweisen, dass Sie den Dateityp im Grunde genommen mit
ls
dem-F
Flag (klassifizieren) sehen können, das je nach Typ ein Symbol an den Dateinamen anfügt:Sie können jedoch sehen, dass diese Informationen im ersten Buchstaben der Ausgabe von etwas weniger kryptisch angezeigt werden
ls -l
. Die Antwort von wjandrea beschreibt dies genauer.Aber ich denke nicht, dass Sie das mit Dateityp meinen. Der
ls
Befehl sieht sich keine regulären Dateien an - nur Verzeichnisverzeichnisse (in denen Dateinamen gespeichert sind) und Inodes (in denen Metadaten gespeichert sind, einschließlich des "Typs" in dem zuvor genannten Sinne).Daher kann der
ls
Befehl den Dateityp nicht in dem Sinne anzeigen, dass es sich um ein JPG-Bild oder eine Binärdatei oder eine Textdatei oder ein LibreOffice-Dokument handelt, da er diese Informationen nicht enthält.Dazu als singrium Antwort weist darauf hin, müssen Sie den
file
Befehl, die Blicke auf dem ersten 50-100kB oder so von Dateiinhalten ihre Art zu bestimmen.quelle
Eine Form des Dateityps ist, ob eine Datei eine reguläre Datei, ein Verzeichnis, ein Gerät, ein Symlink usw.
ls
ist. Dies kann mithilfe von Optionen-l
oder angezeigt werden-F
.Option
-l
zeigt den Dateityp als einzelnes Zeichen am Anfang einer Auflistung an, z.Wo
-
ist eine reguläre Datei,d
ist ein Verzeichnis undl
ist ein Symlink.Option
-F
zeigt den Dateityp als Suffix an, z.Wo kein Suffix eine reguläre Datei ist,
/
ist es ein Verzeichnis und@
ein Symlink.Weitere Informationen hierzu finden Sie in
info coreutils 'ls invocation'
, zusammengefasst hier:Für
-l
:Für
-F
:quelle