ls
Linux'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ü?
ls
Linux'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ü?
Yanıtlar:
Neden stat
yerine kullanmıyorsun ls
?
stat -c "%y %s %n" *
find . -type f -print0 | xargs -0 stat -c "%y %s %n"
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)
ls
bunu binlik ayırıcı bir karakterle yazdırabilirim. Nasıl çalışır stat
?
ls
. Peki ya renkler?
find
Yardımcı program ile dosyaları nasıl listeleyeceğiniz konusunda çok fazla kontrol sahibi olabilirsiniz . ls
gerç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
printf
Eylemin 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.
%C+
(çıkış "2016-08-29 + 10: 57: 56.9201257840") ve %Cc
(çıkış "Mo 29 Ağu 2016 10:57:56 CEST")
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 ...
ls
Takma 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.
ls
, ancak OP'nin istediği şey buydu ...
/bin/ls
takma sorundan kaçınır.)
ls
ikimiz de boşluk gereksinimi karşılamak gitmiyor kabul ettikleri. /bin/ls
Öneri iyi biridir.
-h
insan 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? ;)
'Date' komutunu da kullanabilirsiniz. Kullanımı çok kolaydır:
tarih -r [dosya adı]
date -r foo*.txt
->date: extra operand "foo2.txt"
boşluk ayırıcı olarak tanımlanır ve f6 ise alan 6'yı ifade eder.
ls -lt | cut -d" " -f6-
İki komutu pipeline edebilirsiniz
ls -l|cut -d" " -f5
ls
harika, çü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ğused
bu 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 :)