Bagaimana membatasi keluaran ls hanya untuk menunjukkan nama file, tanggal dan ukuran?
25
Bagaimana saya bisa menggunakan lsdi linux untuk mendapatkan daftar tanggal dan ukuran nama file saja? Saya tidak perlu melihat info lain seperti pemilik, izin.
Ini akan mencetak ukuran file dalam byte, bulan, tanggal, dan nama file.
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
@Sosukudo Ya, saya juga tidak yakin. Tetapi orang-orang tampaknya setuju bahwa tidak masalah untuk mengecilkan pertanyaan-pertanyaan buruk tetapi bukan jawabannya jika itu berguna. meta.stackexchange.com/questions/98197/…
Jin
@Sosukodo: jangan ragu untuk
memperbaiki
6
tidak ada dukungan untuk nama file dengan beberapa spasi
meso_2600
12
Secara teknis, ini tidak mungkin dilakukan ls, tetapi finddapat melakukan pekerjaan yang sama dengan -printfsakelarnya:
Saran Anda adalah pemenang saya, dan saya sarankan jika orang tertarik pada lebih banyak bidang untuk printf yang mereka RTFM. Sebagai contoh, tunjukkan saya izin untuk semua file yang bukan direktori: find usr/lib/ -not -type d -printf '%M %p\n output: -rw-r--r-- usr/lib/x86_64-linux-gnu/apr-util-1/apr_crypto_openssl-1.so... Ajari seorang pria untuk memancing dan semua itu ...
Craig
Pertanyaan tentang linux jadi bukan jawaban yang tidak masuk akal, tetapi untuk catatan ini membutuhkan GNU find.
Dan Pritts
5
Anda selalu dapat melakukan:
$ 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 untuk:
$ 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
$
tidak bekerja dengan: kepemilikan variabel, grup, ukuran file
meso_2600
Cut tidak runtuh pembatas berurutan, di mana seperti ls -lmenggunakan spasi spasi. Jika kolom Anda tidak panjangnya seragam (kolom 5, ukuran file sering kali tidak), potong tidak akan memilih kolom dengan benar. Runtuh spasi berturut-turut akan membantu (perhatikan spasi dalam nama file). ls -l | tr -s ' ' | cut -f 8-13 -d ' '
Penjelasan: %y= tanggal modifikasi yang bisa dibaca manusia;
%s= ukuran dalam byte (rata %12skanan, panjang 12);
%n= nama file (rata %-16nkiri, panjang 16); \t= tab, \n= linefeed. |= char pipa literal, hanya untuk menunjukkan akhir nama file.
Seperti ls, stattidak memiliki opsi untuk memilih file mana yang akan ditampilkan. (Itu bisa dilakukan dengan shell globbing seperti ditunjukkan di atas atau beberapa find ... -print0 | xargs -r0 stat ..., misalnya.)
Pertanyaannya adalah tentang linux, jadi jawaban Anda baik-baik saja, tetapi bagi siapa pun yang peduli, inilah yang setara dengan stat FreeBSD. stat -f '%N %Sm %z' filename
Jawaban:
ls -l | awk '{print $5, $6, $7, $9}'
Ini akan mencetak ukuran file dalam byte, bulan, tanggal, dan nama file.
sumber
Secara teknis, ini tidak mungkin dilakukan
ls
, tetapifind
dapat melakukan pekerjaan yang sama dengan-printf
sakelarnya:sumber
find usr/lib/ -not -type d -printf '%M %p\n
output:-rw-r--r-- usr/lib/x86_64-linux-gnu/apr-util-1/apr_crypto_openssl-1.so
... Ajari seorang pria untuk memancing dan semua itu ...Anda selalu dapat melakukan:
cut
untuk:sumber
ls -l
menggunakan spasi spasi. Jika kolom Anda tidak panjangnya seragam (kolom 5, ukuran file sering kali tidak), potong tidak akan memilih kolom dengan benar. Runtuh spasi berturut-turut akan membantu (perhatikan spasi dalam nama file).ls -l | tr -s ' ' | cut -f 8-13 -d ' '
Non-
ls
cara lain:Penjelasan:
%y
= tanggal modifikasi yang bisa dibaca manusia;%s
= ukuran dalam byte (rata%12s
kanan, panjang 12);%n
= nama file (rata%-16n
kiri, panjang 16);\t
= tab,\n
= linefeed.|
= char pipa literal, hanya untuk menunjukkan akhir nama file.Seperti
ls
,stat
tidak memiliki opsi untuk memilih file mana yang akan ditampilkan. (Itu bisa dilakukan dengan shell globbing seperti ditunjukkan di atas atau beberapafind ... -print0 | xargs -r0 stat ...
, misalnya.)sumber
stat -f '%N %Sm %z' filename
Sedikit variasi pada tolitius
sumber