Bir dizindeki dosyaların sayısı nasıl sayılır ancak özyinelemeli sayılmaz


30

Basit bir soru eminim. Alt dizinler de dahil olmak üzere nasıl yapılacağını gösteren bir cevap gördüm , ancak yalnızca geçerli dizinde kaç tane dosya (klasör değil) olduğunu bilmek istiyorum. Teşekkürler.

Yanıtlar:


60
ls -F |grep -v / | wc -l
  1. ls -F tüm dosyaları listele ve göstergeyi (* / => @ |) girişlerden birine ekle
  2. grep -v /do bütün de dizeleri tutmak değil bir çizgi içerirler
  3. wc -l sayım çizgileri

Dizinler dışındaki her şeyin listesi.
56'da 3'13

Ayrıldığın ve bölümleri açıkladığın için çok teşekkür ederim, çalışkan ve iyi açıklanmış bir cevap için teşekkür ederim!
bcsteeve

1
Tüm cevaplar sorunumu çözerken, bunu belgelenmiş ve anlaması en kolay olanı seçiyorum. Ama herkese teşekkürler!
bcsteeve

15

Bu oneliner'ı dene:

find -maxdepth 1 -type f | wc -l

Bu iyi, sadece dosyalar ve başka hiçbir şey :-)
thom 3:13

Bu, bağlantıları ve özel karakter cihazlarını atlar.
ojblass

Buradaki tüm cevaplar harika! İlk önce, teşekkür ederim. İkincisi ... nasıl seçerim?
bcsteeve

6

Bunu dene

ls -al | grep ^[-] | wc -l
  1. ls -al - Uzun dosya formatı ile tüm dosyaları listele
  2. grep ^[-] - ls -al olan liste dosyası olduğunda normal dosyayı ifade eden sembol olan "-" ile başlayan dizgeyi arayın.
  3. wc -l - sayım çizgileri

Peki ya yumuşak bağlantılar? Bağlantılı dosyalar ne olacak?

Güzel bir dosya, sadece dosyalar ve bağlantılar var.
58'de 3'13

Yumuşak / sert bağlantı için yerine çıkıntı -tarafındanl
andr3w

Ayrıldığın ve bölümleri açıkladığın için çok teşekkür ederim, çalışkan ve iyi açıklanmış bir cevap için teşekkür ederim!
bcsteeve

2

Sadece thom'un cevabını eklemek istiyorum çünkü Bash ile oynamayı seviyorum . İşte gidiyor:

echo "Directory $(pwd) has $(ls -F |grep -v / | wc -l) files"

Körük dizimin bir sonucudur /data:

Directory /data has 580569 file(s).

Ve feryat benim açıklamalarım:

  1. echo double-quoted-message İstenilen bir mesajı yazdıracaktır.
  2. $(any-desirable-valid-command)Bir ihale çift alıntı mesajı echoiçinde ilgili komut yürütme sonucunu yazdıracak.
  3. pwd geçerli dizini yazdıracak.
  4. ls -Ftüm dosyaları listelemek içindir ve göstergeyi (* / => @ |) girişlerine ekleyin. Bunu, Thom'un cevabından kopyaladım .
  5. grep -v /düz metin aramak için kullanılan bir komuttur; -v /parametre, eğik çizgi içermeyen tüm dizeleri tutacaktır.
  6. wc -l satır sayımı basacaktır.

Bu sorunun 3 yaşında olduğunu biliyorum, başka bir cevap eklemek için dürtü tutamıyorum.


2

Eğer varsa treesisteminizde yüklü bu komutu kullanabilirsiniz:

tree -L 1 /path/to/your/directory | tail -n 1

Size bu dizindeki dosya ve dizin sayısını gösterir.

-L n aramanın derinliğini gösterir.

Sen yükleyebilir treeile sudo apt-get install tree.


-3

Belirli uzantılara sahip toplam dosya sayısını saymak için şunu yazabilirsiniz:

ls|grep jpg |wc -l
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.