Yanıtlar:
find dirname -not -empty -lsGNU’nun bulduğu varsayılarak kullanırdım .
lsve 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 +0bu, 0bayttan 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 fyukarıdaki anahtarı da eklemelisiniz . Bu, yalnızca dosyaları bulmasını söyler. Ve aşağıdaki yorumlarda belirtildiği gibi, -printanahtar gerçekten gerekli değildir.
-maxdepth 1önce yerleştirmelisiniz -size +0. Ayrıca -printvarsayılan işlemdir, bu yüzden gerekli değildir.
findgeç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, Lglobbing 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 lsBoyuta göre sıralamak olabilir, sadece bir örnektir değildi ve sadece gözle kontrol niyetinde: ls -S.