Jak mogę użyć ls
w systemie Linux, aby uzyskać listę nazw plików tylko datę i rozmiar? Nie muszę widzieć innych informacji, takich jak właściciel, pozwolenie.
Jak mogę użyć ls
w systemie Linux, aby uzyskać listę nazw plików tylko datę i rozmiar? Nie muszę widzieć innych informacji, takich jak właściciel, pozwolenie.
Odpowiedzi:
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
Technicznie nie jest to możliwe ls
, ale find
może wykonać tę samą pracę za pomocą -printf
przełącznika:
find -maxdepth 1 -printf '%t %s %p\n'
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 ...
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
$
ls -l
dopeł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 ' '
Kolejny nie- ls
sposó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 ( %12s
wyrównany do prawej, długość 12);
%n
= nazwa pliku ( %-16n
wyrównana do lewej, długość 16); \t
= tab, \n
= linefeed. |
= literalny znak potoku, aby pokazać koniec nazwy pliku.
Podobnie jak ls
, stat
nie 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 ...
).
stat -f '%N %Sm %z' filename
Niewielkie różnice w tolitiusie
ls -lh | cut -f 6- -d ' '