Kemungkinan Duplikat:
Bagaimana saya bisa menghitung jumlah folder dalam drive menggunakan Linux?
Saya memiliki pohon direktori yang sangat dalam di kotak Linux saya. Saya ingin menghitung semua file di jalur itu, termasuk semua subdirektori.
Misalnya, diberikan pohon direktori ini:
/home/blue
/home/red
/home/dir/green
/home/dir/yellow
/home/otherDir/
Jika saya lewat /home
, saya ingin mengembalikan empat file. Atau, bonus poin jika mengembalikan empat file dan dua direktori. Pada dasarnya, saya ingin yang setara dengan mengklik kanan folder pada Windows dan memilih properti dan melihat berapa banyak file / folder yang terkandung dalam folder itu.
Bagaimana saya dapat dengan mudah melakukan ini? Saya punya solusi yang melibatkan skrip Python yang saya tulis, tetapi mengapa ini tidak semudah menjalankan ls | wc
atau serupa?
sumber
locate
basis data Anda mutakhir:locate /some/path | wc -l
(atau di Mac saya:)locate -c /some/path
. Tetapi: ini juga akan menghitung file/this/other/path/with/some/path
, dan akan menghitung folder itu sendiri.Jawaban:
find . -type f | wc -l
Penjelasan:
find . -type f
menemukan semua file ( -type f ) dalam direktori ( . ) Ini dan di semua sub direktori, nama file kemudian dicetak ke standar satu per baris.Ini kemudian disalurkan | ke dalam
wc
(jumlah kata)-l
opsi memberitahu wc untuk hanya menghitung baris inputnya.Bersama-sama mereka menghitung semua file Anda.
sumber
find
output1
Jawaban di atas sudah menjawab pertanyaan, tetapi saya akan menambahkan bahwa jika Anda menggunakan find tanpa argumen (kecuali untuk folder tempat Anda ingin pencarian terjadi) seperti pada:
pencarian berjalan jauh lebih cepat, hampir seketika, atau paling tidak bagi saya. Ini karena klausa tipe harus menjalankan stat () system call pada setiap nama untuk memeriksa tipenya - menghilangkannya menghindari melakukannya.
Ini memiliki perbedaan mengembalikan jumlah file plus folder daripada hanya file, tetapi setidaknya bagi saya itu sudah cukup karena saya kebanyakan menggunakan ini untuk menemukan folder mana yang memiliki jumlah file besar yang membutuhkan waktu lama untuk menyalin dan mengompresnya. Menghitung folder masih memungkinkan saya menemukan folder dengan sebagian besar file, saya membutuhkan lebih banyak kecepatan daripada presisi.
sumber
1
Untuk file:
Untuk direktori:
Keduanya bekerja di direktori kerja saat ini.
sumber
1
Dengan bash 4+
Tidak perlu memanggil menemukan dua kali jika Anda ingin mencari file dan direktori
sumber
Perbarui sedikit jawaban yang diterima, jika Anda ingin hitungan dir dan semacamnya
sumber
find $DIR -exec stat -f '%HT' {} \; | sort | uniq -c | sort -rn
(Di sini, ketik%T
kosong untuk file biasa, tanda bintang untuk file yang dapat dieksekusi, atau garis miring untuk folder; karena%HT
itu diperlukan, atau beberapa teks tambahan untuk menghindari ruang agar tidak dihitung, seperti> %T
. )