Ls çıktısının yalnızca dosya adını, tarihini ve boyutunu göstermesi nasıl sınırlanır?


23

lsLinux'ta yalnızca tarih ve beden dosya adlarının bir listesini almak için nasıl kullanabilirim ? Sahip, izin gibi diğer bilgileri görmeme gerek yok.


hangi Linux hakkında konuşuyoruz?
tolitius

apache sunucusu ..

Yanıtlar:


25

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

Bu, dosya boyutunu bayt, ay, tarih ve dosya adı olarak yazdıracaktır.

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 Evet, ya da emin değilim. Ancak insanlar kötü soruları reddetmenin uygun olduğu konusunda hemfikirler, fakat eğer yararlılarsa cevapları değil meta.stackexchange.com/questions/98197/…
Jin,

@Sosukodo: :) şimdi upvote çekinmeyin
sehe

5
çoklu boşluk içeren dosya
isimlerini

11

Teknik olarak, bu mümkün değildir ls, ancak findaynı işi -printfdüğmesiyle yapabilir:

find -maxdepth 1 -printf '%t %s %p\n'

1
Öneriniz benim kazananımdır ve eğer insanlar baskı için daha fazla alanla ilgileniyorlarsa RTFM'yi tavsiye ederim. Örneğin, bana bir dizin olmayan tüm dosyaların izinlerini göster: 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... Balık tutmayı bir adama öğret ve ...
Craig

Soru Linux'la ilgilidir, bu yüzden makul olmayan bir cevap değil, ancak bunun için GNU bulmayı gerektiren kayıt.
Dan Pritts

4

her zaman yapabilirsin:

$ 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 o:

$ 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

$ 

4
ile çalışmaz: değişken sahipliği, gruplar, dosya boyutları
meso_2600

Kesim, ls -lbeyaz boşluk doldurmanın kullanıldığı yerlerde ardışık sınırlayıcıları daraltmaz . Sütunlarınız aynı uzunlukta değilse (hangi sütun 5, dosya boyutu genellikle çıkmaz), kesme, sütunları doğru seçmez. Ardışık boşlukların daraltılması yardımcı olacaktır (dosya adlarındaki boşluklara dikkat edin). ls -l | tr -s ' ' | cut -f 8-13 -d ' '
Dave,

4

Başka bir yolsuz ls:

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

Açıklama: %y= insan tarafından okunabilen değişiklik tarihi; %s= bayt cinsinden boyut ( %12ssağa hizalı, uzunluk 12); %n= dosya adı ( %-16nsola dayalı, uzunluk 16); \t= tab, \n= satır besleme. |= literal pipe char, sadece dosya adının sonunu göstermek için.

Gibi ls, stathangi dosyaların gösterileceğini seçme seçeneği yoktur. (Bu, yukarıda gösterildiği gibi find ... -print0 | xargs -r0 stat ..., örneğin bazıları ya da bir kısmı kabukla işlenerek yapılabilir .)


Soru Linux'la ilgiliydi, bu yüzden cevabınız iyi, ama umursayan herkes için, işte FreeBSD stat için bir eşdeğer. stat -f '%N %Sm %z' filename
Dan Pritts

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.