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.

Kelingking
sumber
Linux apa yang sedang kita bicarakan?
tolitius
server apache ..

Jawaban:

26

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

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
Jin
sumber
@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:

find -maxdepth 1 -printf '%t %s %p\n'
thiton
sumber
1
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

$ 
Tolitius
sumber
4
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 ' '
Dave
4

Non- lscara lain:

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

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

Kehidupan Akhir
sumber
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
Dan Pritts
2

Sedikit variasi pada tolitius

ls -lh | cut -f 6- -d ' '
zzapper
sumber
1
Ingin menjelaskan apa yang ditambahkan variasi?
Ivo Flipse
Hanya menghilangkan kebutuhan untuk menentukan jumlah bidang akhir dengan menggunakan 6- dalam menggantikan 6-x
zzapper