Cara menghitung jumlah file dalam suatu direktori tetapi tidak secara rekursif


30

Pertanyaan sederhana, saya yakin. Saya telah melihat jawaban yang menunjukkan bagaimana melakukannya termasuk subdirektori, tetapi saya ingin tahu berapa banyak file (bukan folder) yang ada di direktori saat ini saja. Terima kasih.

Jawaban:


60
ls -F |grep -v / | wc -l
  1. ls -F daftar semua file dan tambahkan indikator (salah satu dari * / => @ |) ke entri
  2. grep -v /simpan semua string yang tidak mengandung garis miring
  3. wc -l menghitung garis

Daftar semuanya kecuali direktori.
thom

Saya sangat menghargai Anda memecahkannya dan menjelaskan bagian-bagiannya, terima kasih atas jawaban yang berhasil dan dijelaskan dengan baik!
bcsteeve

1
Sementara semua jawaban menyelesaikan masalah saya, saya memilih yang ini sebagai yang terdokumentasi dan termudah untuk saya pahami. Tapi terima kasih untuk semuanya!
bcsteeve

15

Coba oneliner ini:

find -maxdepth 1 -type f | wc -l

Ini bagus, hanya file dan tidak ada yang lain :-)
thom

Ini melompati tautan dan perangkat karakter khusus.
ojblass

Semua jawaban di sini berfungsi dengan baik! Jadi pertama, TERIMA KASIH. Kedua ... bagaimana saya memilih?
bcsteeve

6

Coba ini

ls -al | grep ^[-] | wc -l
  1. ls -al - daftar semua file dengan format daftar panjang
  2. grep ^[-] - mencari string yang dimulai dengan "-" yang merupakan simbol untuk menunjukkan file biasa ketika daftar file dengan ls -al
  3. wc -l - menghitung garis

Bagaimana dengan tautan lunak? Bagaimana dengan file yang ditautkan?

Bagus, hanya file dan tautan, tidak ada yang lain.
thom

Untuk tautan tautan lunak / keras diganti -denganl
andr3w

Saya sangat menghargai Anda memecahkannya dan menjelaskan bagian-bagiannya, terima kasih atas jawaban yang berhasil dan dijelaskan dengan baik!
bcsteeve

2

Saya hanya ingin menambahkan jawaban mereka karena saya suka bermain dengan Bash . Ini dia:

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

Di bawah ini adalah contoh hasil /datadirektori saya :

Directory /data has 580569 file(s).

Dan di bawah ini penjelasan saya:

  1. echo double-quoted-message akan mencetak pesan yang diinginkan.
  2. $(any-desirable-valid-command)di dalam pesan yang dikutip ganda dari suatu echoakan mencetak hasil dari eksekusi perintah terkait.
  3. pwd akan mencetak direktori saat ini.
  4. ls -Fadalah untuk mendaftarkan semua file dan menambahkan indikator (salah satu dari * / => @ |) ke entri. Saya menyalin ini dari jawaban mereka .
  5. grep -v /adalah perintah untuk mencari teks biasa, -v /parameter akan menyimpan semua string yang tidak mengandung slash (es).
  6. wc -l akan mencetak penghitungan baris.

Saya tahu pertanyaan ini berumur 3 tahun, saya tidak bisa menahan keinginan saya untuk menambahkan jawaban lain.


2

Jika Anda telah treemenginstal pada sistem Anda, Anda dapat menggunakan perintah ini:

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

Ini menunjukkan kepada Anda jumlah file dan direktori dalam direktori itu.

-L n menunjukkan kedalaman pencarian.

Anda dapat menginstal treedengan sudo apt-get install tree.


-3

Untuk menghitung jumlah total file dengan ekstensi spesifik Anda dapat mengetik:

ls|grep jpg |wc -l
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.