Linux sadece dosya adı tarih ve boyutunu gösterecek


72

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


1
lsharika, çünkü tarihine göre çok hızlı bir sıralama yapıyor, ancak biçimlendirmenin üstesinden gelmek zor. Ben gibi --time tarzı bir belirteç kullanılarak önermek --time-style='+&%Y%m%d+%H%M%S.%N'referans olarak daha fazla sahip çıkışını ayrıştırmak ki kullanılarak '&' belirteci olduğu sedbu nedenle de belirteç boyutu olduğu gibi hemen önce backtrack olabilir! Birisi bunu eksiksiz bir cevap olarak göndermek isterse, çekinmeyin, şu anda çok uyuyorum :)
Aquarius Power

Yanıtlar:


98

Neden statyerine kullanmıyorsun ls?

stat -c "%y %s %n" *

1
Bu güzel, ama potansiyel olarak "çok büyük ortam" / "çok uzun argüman listesi" sorunu var.
Mat,

4
:-) Sadece bir konsept kanıtı. Gerçek Hayatta [tm] bu olacakfind . -type f -print0 | xargs -0 stat -c "%y %s %n"
f4m8

5
Çıktısını biçimlendirmek için stat, C printf işlevi gibi biçim dizgisine genişlik bilgileri ekleyebilirsiniz , örneğin "%y %8s %n"belgelenmemiş, ancak işler gibi görünüyor (coreutils 8.17, Fedora 18)
LiuYan 研 研

Çünkü lsbunu binlik ayırıcı bir karakterle yazdırabilirim. Nasıl çalışır stat?
Al Bundy

Bunun soruyu nasıl cevapladığını anlamıyorum? Kutunun dışında güzel bir çözüm, ancak tüm faydalarını kaybedersiniz ls. Peki ya renkler?
MS,

30

findYardımcı program ile dosyaları nasıl listeleyeceğiniz konusunda çok fazla kontrol sahibi olabilirsiniz . lsgerçekten istediğiniz sütunları belirtmenize izin vermiyor.

Örneğin:

$ find . -maxdepth 1 -printf '%CY%Cm%Cd.%CH%CM\t%s\t%f\n'
20111007.0601   4096    .
20111007.0601   2   b
20111001.1322   4096    a

printfEylemin argümanı manpage'de ayrıntılı olarak verilmiştir. İstediğiniz boyutu (kullanılan dosya boyutu veya disk blokları), vb farklı zaman bilgileri seçebilirsiniz. Daha fazla işlem gerekiyorsa, bunu olağandışı dosya adları için de güvenli yapabilirsiniz.


1
Bulmak için girdi üstünde ('% CY% Cm% Cd.% C ...') uzun. En azından GNU bulmak %C+(çıkış "2016-08-29 + 10: 57: 56.9201257840") ve %Cc(çıkış "Mo 29 Ağu 2016 10:57:56 CEST")
guettli 9 Aralık'ta

Bunun mac'larda çalışmasını diliyorum.
Jerinaw

çok güzel ve tam yol ve büyüklükte baskı yapmak istiyorsanız, bu "Bul / Yol / İş / /Printf '% h /% f% s \ n'" çalışması gerekir
Pierluigi Vernetto

24

Her zaman 1awk çıktısını biçimlendirmek gibi bir yardımcı program kullanabilirsiniz :ls

/bin/ls -ls | awk '{print $7,$8,$9}'


1.Evet, genellikle, ls çıktısını ayrıştırmamalısınız, ancak bu durumda soru özellikle bunun için çağırır ...


Ancak bu dosya boyutunu yazdırmaz. Ve sadece dosya adlarının ilk kısmını beyaz boşluklarla birlikte basar. lsTakma isimlendirilmişse başarısız olabilir alias ls='ls -i'. Çıktısını ayrıştırma yapmak istiyorsanız gerçekten çok dikkatli olmalısınız.
Mat,

Dosya boyutu orada vardı ve sonra dışarı düzenledi (belirsiz an) - Ben geri yükleyeceğim. Ve ayrıştırılan tüm uyarılara katılıyorum ls, ancak OP'nin istediği şey buydu ...
jasonwryan

Buna katılmıyorum, OP dosya adının boşluk bırakması durumunda dosya adının ilk bölümünü değil dosya adlarını istiyor. (Kullanmak /bin/lstakma sorundan kaçınır.)
Mat

Anlaşılmaktadır örtülü : Ne belirtilmektedir açıkça OP ile bir çözüm istemesi lsikimiz de boşluk gereksinimi karşılamak gitmiyor kabul ettikleri. /bin/lsÖneri iyi biridir.
jasonwryan

bu çözümü seviyorum; Baskı boyutu hakkında önceki yorumlarda, ls ile boyut alabilir ve -hinsan tarafından okunabilir hale getirmek için kullanabilirsiniz . Özellikle kullandığım: ls -lah | awk '{print $5,$6,$7,$8}'getirir ve burada: 4.0K Jan 24 18:17. Verilen, orijinal çözüm awk hakkında hiçbir şey söylemez, ancak linux'da bir işlemin çıktısının her zaman başka bir işlemin girdisi olacağını varsaymalıyız, değil mi? ;)
abgordon

5

'Date' komutunu da kullanabilirsiniz. Kullanımı çok kolaydır:

tarih -r [dosya adı]


Güzel, bu benim için yeniydi. Maalesef globbing üzerinden birkaç dosya için çalışmaz: date -r foo*.txt->date: extra operand "foo2.txt"
guettli

4

Ls kullanmak, ancak uygun boyutu korumak istiyorsanız, şunları kullanabilirsiniz:

ls -Ss1pq --block-size=1

1

boşluk ayırıcı olarak tanımlanır ve f6 ise alan 6'yı ifade eder.

ls -lt | cut -d" " -f6-

2
girinti için boşluklar kullandığı için başarısız oldu ve bazen -f6- diğer zamanlarda -f5-
Aquarius Power

1

İki komutu pipeline edebilirsiniz

ls -l|cut -d" " -f5

1
girinti için boşluklar kullandığı için başarısız oldu ve bazen -f6- diğer zamanlarda -f5-
Aquarius Power

-1

ls -s1 , Linux hakkında emin değil, yalnızca AIX'te dosya boyutunu ve adını döndürür


2
Bunun soruyu nasıl cevapladığını niçin inandığınızı açıklayabilir misiniz?
Scott
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.