Yanıtlar:
find dirname -not -empty -ls
GNU’nun bulduğu varsayılarak kullanırdım .
ls
ve kullandığınız find
;) olsa artırdı ... Bu uygun bir çözümdür
Bu iş bulmak için yeterince güçlü değil.
find -maxdepth 1 -size +0 -print
-maxdepth 1
- bu bulucuya yalnızca geçerli dizini aramayı, tüm alt dizinlere bakmayı kaldırmayı veya 2, 3 veya daha fazla seviyeye inme sayısını değiştirmeyi söyler.
-size +0
bu, 0
bayttan daha büyük boyutlu dosyaları aramayı söyler . 0
İstediğiniz herhangi bir boyuta değiştirilebilir.
-print
bulduğu dosyanın tam yolunu yazmasını söyler
Düzenleme:
Geç ek: Büyük olasılıkla -type f
yukarıdaki anahtarı da eklemelisiniz . Bu, yalnızca dosyaları bulmasını söyler. Ve aşağıdaki yorumlarda belirtildiği gibi, -print
anahtar gerçekten gerekli değildir.
-maxdepth 1
önce yerleştirmelisiniz -size +0
. Ayrıca -print
varsayılan işlemdir, bu yüzden gerekli değildir.
find
geçerli tercihler ne açısından ve nerede gidebilir çok şey değişir. GNU find
(çok yaygın olan) daha-size
önce koyarsanız bir uyarı üretecektir -maxdepth
.
Ls'in dosyaları filtreleme seçeneği neredeyse yok: bu onun işi değil. Dosyaları filtrelemek basit vakalar için kabuğun işi (globbing yoluyla) ve karmaşık durumlar için bulma işidir.
Zsh'de, L
globbing niteleyicisini yalnızca> 0 olan dosyaları saklamak için niteleyebilirsiniz ( .
niteleyici normal dosyalar ile sınırlıdır):
ls *(.L+0)
Diğer mermilerin kullanıcıları bulmalı. GNU bul ile (çoğunlukla Linux'ta bulunur):
find -maxdepth 1 -type f ! -empty -exec ls {} +
POSIX uyumlu bir yol:
find . -type f -size +0c -exec ls {} + -o -name . -o -prune
Eğer ls
Boyuta göre sıralamak olabilir, sadece bir örnektir değildi ve sadece gözle kontrol niyetinde: ls -S
.