Temukan jumlah file di folder dan sub folder?


143

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

Jawaban:


224

Mungkin seperti itu

find . -type f | wc -l

akan melakukan trik. Coba perintah dari folder induk.


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.


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

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 .


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.


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

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


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


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

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.