Jak ograniczyć wyjście ls, aby wyświetlał tylko nazwę pliku, datę i rozmiar?

25

Jak mogę użyć lsw systemie Linux, aby uzyskać listę nazw plików tylko datę i rozmiar? Nie muszę widzieć innych informacji, takich jak właściciel, pozwolenie.

Mały palec u ręki
źródło
o jakim systemie Linux mówimy?
tolitius
serwer Apache ..

Odpowiedzi:

26

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

Spowoduje to wydrukowanie rozmiaru pliku w bajtach, miesiącu, dacie i nazwie pliku.

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
źródło
@Sosukudo Tak, też nie jestem pewien. Ale wydaje się, że ludzie zgadzają się, aby głosować na złe pytania, ale nie odpowiedzi, jeśli są przydatne. meta.stackexchange.com/questions/98197/…
Jin
@Sosukodo: zachęcamy do głosowania teraz :)
patrz
6
brak obsługi nazw plików z wieloma spacjami
meso_2600
12

Technicznie nie jest to możliwe ls, ale findmoże wykonać tę samą pracę za pomocą -printfprzełącznika:

find -maxdepth 1 -printf '%t %s %p\n'
Thiton
źródło
1
Twoja sugestia jest moim zwycięzcą i polecam, jeśli ludzie są zainteresowani większą liczbą pól do wydruku, to RTFM. Na przykład pokaż mi uprawnienia do wszystkich plików, które nie są katalogiem: find usr/lib/ -not -type d -printf '%M %p\n wyjście: -rw-r--r-- usr/lib/x86_64-linux-gnu/apr-util-1/apr_crypto_openssl-1.so... Naucz człowieka łowienia ryb i tak dalej ...
Craig
Pytanie dotyczy Linuksa, więc nie jest to nierozsądna odpowiedź, ale dla zapisu wymaga to znalezienia GNU.
Dan Pritts
5

zawsze możesz zrobić:

$ 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 to do:

$ 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
źródło
4
nie współpracuje z: zmiennymi własnościami, grupami, rozmiarami plików
meso_2600 30.03.2016
Wytnij nie zwija kolejnych ograniczników, w których podobnie jak ls -ldopełnienie spacjami. Jeśli twoje kolumny nie mają jednolitej długości (która kolumna 5, rozmiar pliku często nie będzie), cięcie nie wybierze kolumn poprawnie. Pomoże zwinięcie kolejnych spacji (uważaj na spacje w nazwach plików). ls -l | tr -s ' ' | cut -f 8-13 -d ' '
Dave
4

Kolejny nie- lssposób:

> 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  |

Objaśnienie: %y= data modyfikacji czytelna dla człowieka; %s= rozmiar w bajtach ( %12swyrównany do prawej, długość 12); %n= nazwa pliku ( %-16nwyrównana do lewej, długość 16); \t= tab, \n= linefeed. |= literalny znak potoku, aby pokazać koniec nazwy pliku.

Podobnie jak ls, statnie ma opcji wyboru plików do wyświetlenia. (Można to zrobić na przykład przez globbing powłoki, jak pokazano powyżej lub niektóre find ... -print0 | xargs -r0 stat ...).

EndlosSchleife
źródło
Pytanie dotyczyło Linuksa, więc twoja odpowiedź jest w porządku, ale dla każdego, kogo to obchodzi, oto odpowiednik statystyki FreeBSD. stat -f '%N %Sm %z' filename
Dan Pritts
2

Niewielkie różnice w tolitiusie

ls -lh | cut -f 6- -d ' '
zzapper
źródło
1
Chcesz wyjaśnić, co dodaje ta odmiana?
Ivo Flipse,
Po prostu eliminuje potrzebę określania numeru pola końcowego za pomocą 6 zamiast 6-x
zzapper