Antworten:
Warum nicht stat
statt verwenden ls
?
stat -c "%y %s %n" *
find . -type f -print0 | xargs -0 stat -c "%y %s %n"
stat
, können Sie hinzufügen Breite Informationen zu dem Formatstring wie C printf Funktion, zum Beispiel "%y %8s %n"
, es ist nicht dokumentiert, aber scheint Werke (coreutils 8.17, Fedora 18)
ls
kann ich es mit tausend Trennzeichen ausgeben. Wie funktioniert das stat
?
ls
. Was ist mit Farben?
Sie können mit dem find
Dienstprogramm eine Menge Kontrolle darüber erhalten, wie Sie Dateien auflisten. ls
Sie können die gewünschten Spalten nicht wirklich angeben.
Zum Beispiel:
$ find . -maxdepth 1 -printf '%CY%Cm%Cd.%CH%CM\t%s\t%f\n'
20111007.0601 4096 .
20111007.0601 2 b
20111001.1322 4096 a
Das Argument für die printf
Aktion ist in der Manpage detailliert. Sie können verschiedene Zeitinformationen, die gewünschte Größe (Dateigröße oder verwendete Plattenblöcke) usw. auswählen. Sie können dies auch für ungewöhnliche Dateinamen sicher machen, wenn weitere Verarbeitung erforderlich ist.
%C+
(Ausgabe "2016-08-29 + 10: 57: 56.9201257840") und %Cc
(Ausgabe "Mo 29 Aug 2016 10:57:56 CEST")
Sie können jederzeit ein anderes Dienstprogramm verwenden, awk
um die Ausgabe von ls
1 zu formatieren :
/bin/ls -ls | awk '{print $7,$8,$9}'
1.Ja, im Allgemeinen sollten Sie die Ausgabe von ls nicht analysieren, aber in diesem Fall verlangt die Frage dies ausdrücklich ...
ls
Alias ist (sagen wir alias ls='ls -i'
). Sie sollten wirklich sehr vorsichtig sein, wenn Sie ls-Ausgaben analysieren möchten.
ls
, aber
/bin/ls
würde das Alias-Problem
ls
der wir uns beide einig sind, dass sie die Leerzeichen-Anforderung nicht erfüllen wird. Der /bin/ls
Vorschlag ist gut.
-h
, um sie für den Menschen lesbar zu machen. Genauer gesagt verwendet I: ls -lah | awk '{print $5,$6,$7,$8}'
was ergibt: 4.0K Jan 24 18:17
. Zugegeben, die ursprüngliche Lösung sagt nichts über awk aus, aber unter Linux sollten wir davon ausgehen, dass die Ausgabe eines Prozesses immer die Eingabe für einen anderen Prozess ist, oder? ;)
Sie können auch den Befehl 'date' verwenden. Es ist sehr einfach zu bedienen:
Datum -r [Dateiname]
date -r foo*.txt
->date: extra operand "foo2.txt"
wobei Leerzeichen als Trennzeichen definiert ist und f6 Feld 6 bedeutet
ls -lt | cut -d" " -f6-
Sie können zwei Befehle weiterleiten
ls -l|cut -d" " -f5
ls
ist großartig, weil es sehr schnell nach Datum und Uhrzeit sortiert, aber die Formatierung ist schwer zu handhaben. Ich schlage vor, ein Token im --time-Stil zu verwenden, etwa--time-style='+&%Y%m%d+%H%M%S.%N'
wenn das Token '&' ist. Wenn Sie dies als Referenz verwenden, können Sie die Ausgabe weiter analysieren,sed
damit Sie auch zurückverfolgen können, bevor das Token die Größe hat! Wenn jemand das als vollständige Antwort posten möchte, zögern Sie nicht, ich schlafe gerade :)