Temukan jumlah file di folder dan sub folder?

143

Saya ingin mencari jumlah total jumlah file di bawah folder dan semua sub foldernya.

topless
sumber

Jawaban:

224

Mungkin seperti itu

find . -type f | wc -l

akan melakukan trik. Coba perintah dari folder induk.

sagarchalise
sumber
3
Solusinya akan gagal pada file yang namanya berisi baris baru.
pengguna tidak diketahui
2
@ pengguna tidak diketahui:find . -type f -ls | wc -l
mengatur
1
lebih cepat:find . -type f -print0 | tr -d -c '\0' | wc -c
mengatur
13
@ mengatur: lebih cepat: find . -type f -printf . | wc -c- Saya mengadopsi cetakan untuk solusi saya, bukan gema -exec saya.
pengguna tidak dikenal
1
perintah ini bekerja seperti mantra dalam kasus saya, terlihat seperti ilmu hitam
pcko1
27

Gunakan treeperintah. Anda mungkin perlu menginstal treepaket.

Ini akan mencantumkan semua file dan folder di bawah folder yang diberikan dan daftar ringkasan di akhir.

Egil
sumber
14

Untuk menghitung file (bahkan file tanpa ekstensi) di root direktori saat ini, gunakan:

ls -l | grep ^- | wc -l

Untuk menghitung file (bahkan file tanpa ekstensi) secara rekursif dari akar direktori saat ini, gunakan:

ls -lR | grep ^- | wc -l
pengguna38537
sumber
1
Itu tidak akan menghitung file tersembunyi.
pengguna tidak diketahui
Benar. Saya lebih cenderung menerima dan menggunakan jawaban Anda sebagai solusinya.
user38537
13

Cara tercepat dan termudah adalah menggunakan tree. Kecepatannya dibatasi oleh terminal output Anda, jadi jika Anda mengirim hasilnya tail -1, Anda akan mendapatkan hasilnya segera. Anda juga dapat mengontrol ke level direktori apa yang Anda sukai hasilnya, menggunakan -Lopsi. Untuk keluaran berwarna, gunakan -C. Sebagai contoh:

$ tree share/some/directory/ | tail -1
558 directories, 853 files

$ tree -L 2 share/some/directory/ | tail -1
120 directories, 3 files

Jika belum ada di sana, Anda bisa mendapatkannya di sini .

not2qubit
sumber
9
find -type f -printf . | wc -c

Jangan hitung garis keluaran find, karena nama file, yang berisi 99 baris baru, akan dihitung sebagai 100 file.

Pengguna tidak diketahui
sumber
4
Nama file yang mengandung baris baru adalah kasus tepi yang sangat langka.
DisgruntledGoat
8
@DisgruntledGoat: Jadi kesalahan akan sangat sulit ditemukan.
pengguna tidak diketahui
Saya suka kasus tepi yang baik, terutama bertahun-tahun kemudian.
user38537
3

Gunakan perintah ini untuk setiap folder di jalur

for D in *; do echo $D; find $D -type f| wc -l; done
Sriram Murali
sumber
1

menemukan tampaknya lebih cepat daripada pohon jadi saya gunakan di bawah ini untuk menghitung file di setiap direktori direktori kerja saat ini (mengabaikan file dalam CWD) dengan memungkinkan direktori memiliki spasi:

ls -d */ | while read dir_line do echo -n "$dir_line :" find "$dir_line" -type f | wc -l done

Mike Bounds
sumber
Mengurai output lsadalah ide yang sangat buruk.
souravc
Kode hebat, bagaimana saya bisa mengatur garis keluaran mengatakan dalam jumlah file meningkat atau menurun
nightcrawler
0

Anda dapat gunakan find . | wc -l

find .akan mencantumkan semua file dan folder dan isinya mulai dari folder Anda saat ini.
wc -lmenghitung hasil pencarian

David
sumber
Solusi ini juga menghitung folder, saya memberi tanda karena cocok dengan kesempatan saya bahwa saya tidak ingin menghitungnya :)
topless
Solusinya akan gagal pada file yang namanya berisi baris baru.
pengguna tidak diketahui
0

Saya akan menggunakan opsi ini sendiri:

ls -alR | grep -c ^ -

Charles
sumber
3
Silakan tambahkan beberapa detail ...
Pierre.Vriens