Wie kann ich die Ausgabe von ls einschränken, damit nur Dateiname, Datum und Größe angezeigt werden?

25

Wie kann ich unter lsLinux eine Auflistung der Dateinamen nur für Datum und Größe erhalten? Ich muss die anderen Informationen wie Eigentümer, Erlaubnis nicht sehen.

Pinkie
quelle
Über welches Linux reden wir?
Tolitius
Apache Server ..

Antworten:

26

ls -l | awk '{print $5, $6, $7, $9}'

Dadurch wird die Dateigröße in Byte, Monat, Datum und Dateiname gedruckt.

jin@encrypt /tmp/foo % ls -l
total 0
drwxr-xr-x  2 jin  wheel  68 Oct  4 12:43 bar
drwxr-xr-x  2 jin  wheel  68 Oct  4 12:43 baz
drwxr-xr-x  2 jin  wheel  68 Oct  4 12:43 quux

jin@encrypt /tmp/foo % ls -l | awk '{print $5, $6, $7, $9}'
68 Oct 4 bar
68 Oct 4 baz
68 Oct 4 quux
Jin
quelle
@ Sosukudo Ja, ich bin mir auch nicht sicher. Aber die Leute scheinen sich einig zu sein, dass es in Ordnung ist, schlechte Fragen abzustimmen, aber nicht die Antworten, wenn sie nützlich sind. meta.stackexchange.com/questions/98197/…
Jin
@ Sosukodo: zögern Sie nicht, jetzt zu stimmen :)
sehe
6
Keine Unterstützung für Dateinamen mit mehreren Leerzeichen
meso_2600
12

Technisch ist es mit nicht möglich ls, findkann aber die gleiche Arbeit mit seinem -printfSchalter erledigen :

find -maxdepth 1 -printf '%t %s %p\n'
Thiton
quelle
1
Ihr Vorschlag ist mein Gewinner, und ich würde empfehlen, wenn die Leute an mehr Feldern für den Druck interessiert sind, sie RTFM. Zeigen Sie mir zum Beispiel die Berechtigungen für alle Dateien, die kein Verzeichnis sind: find usr/lib/ -not -type d -printf '%M %p\n Ausgabe: -rw-r--r-- usr/lib/x86_64-linux-gnu/apr-util-1/apr_crypto_openssl-1.so... Bringen Sie einem Mann das Fischen bei und all das ...
Craig
Die Frage ist in Bezug auf Linux also keine unvernünftige Antwort, aber für die Aufzeichnung erfordert dies GNU find.
Dan Pritts
5

Sie können immer tun:

$ ls -l
total 0
-rw-r--r--  1 user  staff  0 Oct  6 23:29 file1
-rw-r--r--  1 user  staff  0 Oct  6 23:29 file2
-rw-r--r--  1 user  staff  0 Oct  6 23:30 file3
-rw-r--r--  1 user  staff  0 Oct  6 23:30 file4
-rw-r--r--  1 user  staff  0 Oct  6 23:30 file5
-rw-r--r--  1 user  staff  0 Oct  6 23:30 file6
-rw-r--r--  1 user  staff  0 Oct  6 23:30 file7

cut es zu:

$ ls -l | cut -f 8-13 -d ' '

0 Oct  6 23:29 file1
0 Oct  6 23:29 file2
0 Oct  6 23:30 file3
0 Oct  6 23:30 file4
0 Oct  6 23:30 file5
0 Oct  6 23:30 file6
0 Oct  6 23:30 file7

$ 
tolitius
quelle
4
funktioniert nicht mit: Variablenbesitz, Gruppen, Dateigrößen
meso_2600
Beim Ausschneiden werden aufeinanderfolgende Trennzeichen nicht ausgeblendet, wenn ls -lLeerzeichen verwendet werden. Wenn Ihre Spalten nicht einheitlich lang sind (welche Spalte 5, Dateigröße oft nicht), werden durch Ausschneiden die Spalten nicht richtig ausgewählt. Das Reduzieren aufeinanderfolgender Leerzeichen hilft (achten Sie auf Leerzeichen in Dateinamen). ls -l | tr -s ' ' | cut -f 8-13 -d ' '
Dave
4

Ein weiteres Non- lsWay:

> stat --printf='%y\t%12s\t%-16n|\n' tmp.*
2017-06-15 10:42:07.252853000 +0200         10485760    tmp.1           |
2017-06-15 10:41:25.659570000 +0200              666    tmp.TKPzm3BfRw  |

Erläuterung: %y= lesbares Änderungsdatum; %s= Größe in Bytes ( %12srechtsbündig, Länge 12); %n= Dateiname ( %-16nlinksbündig, Länge 16); \t= Tabulator, \n= Zeilenvorschub. |= Literales Pipe-Zeichen, nur um das Ende des Dateinamens anzuzeigen.

Wie ls, stathat keine Optionen auswählen , welche Dateien anzeigen. (Dies kann zum Beispiel durch Shell-Globbing wie oben gezeigt oder durch einige erfolgen find ... -print0 | xargs -r0 stat ....)

EndlosSchleife
quelle
Die Frage betraf Linux, daher ist Ihre Antwort in Ordnung, aber für alle, die sich darum kümmern, ist hier eine Entsprechung für FreeBSD stat. stat -f '%N %Sm %z' filename
Dan Pritts
2

Leichte Variation von Tolitius

ls -lh | cut -f 6- -d ' '
zzapper
quelle
1
Möchten Sie erklären, was die Variation hinzufügt?
Ivo Flipse
Nur beseitigt die Notwendigkeit , die Anzahl der Endfeld zu spezifizieren , indem die 6- anstelle von 6-x unter Verwendung
zzapper