GNU/Linux >> Belajar Linux >  >> Linux

Cara cepat menghitung file secara rekursif di linux

Solusi 1:

Jika Anda memiliki ini pada sistem file khusus, atau Anda memiliki jumlah overhead file yang stabil, Anda mungkin bisa mendapatkan jumlah yang cukup kasar dari jumlah file dengan melihat jumlah inode dalam sistem file melalui " df -i":

[email protected]:~# df -i
Filesystem            Inodes   IUsed   IFree IUse% Mounted on
/dev/sda1            60489728   75885 60413843    1% /

Pada kotak pengujian saya di atas, saya mengalokasikan 75.885 inode. Namun, inode ini bukan hanya file, tetapi juga direktori. Misalnya:

[email protected]:~# mkdir /tmp/foo
[email protected]:~# df -i /tmp 
Filesystem            Inodes   IUsed   IFree IUse% Mounted on
/dev/sda1            60489728   75886 60413842    1% /
[email protected]:~# touch /tmp/bar
[email protected]:~# df -i /tmp
Filesystem            Inodes   IUsed   IFree IUse% Mounted on
/dev/sda1            60489728   75887 60413841    1% /

CATATAN:Tidak semua sistem file mempertahankan jumlah inode dengan cara yang sama. ext2/3/4 semuanya akan berfungsi, namun btrf selalu melaporkan 0.

Jika Anda harus membedakan file dari direktori, Anda harus menjalankan sistem file dan "stat" masing-masing untuk melihat apakah itu file, direktori, sym-link, dll ... Masalah terbesar di sini bukan menyalurkan semua teks ke "wc", tetapi mencari di antara semua inode dan entri direktori untuk menggabungkan data tersebut.

Selain tabel inode seperti yang ditunjukkan oleh "df -i", sebenarnya tidak ada database tentang berapa banyak file yang ada di bawah direktori tertentu. Namun, jika informasi ini penting bagi Anda, Anda dapat membuat dan memelihara database tersebut dengan membuat program Anda menambah angka saat mereka membuat file di direktori ini dan menguranginya saat dihapus. Jika Anda tidak mengontrol program yang membuatnya, ini bukanlah pilihan.

Solusi 2:

Saya menulis program penghitungan file khusus untuk pertanyaan StackOverflow ini:https://stackoverflow.com/questions/1427032/fast-linux-file-count-for-a-large-number-of-files

Anda dapat menemukan repo GitHub di sini jika Anda ingin menjelajahi, mengunduh, atau berkontribusi:https://github.com/ChristopherSchultz/fast-file-count

Solusi 3:

Jika Anda ingin menghitung secara rekursif jumlah file dalam direktori, locate perintah adalah fastet yang saya tahu, diasumsikan Anda memiliki database terbaru (sudo update database .. dibuat per default melalui pekerjaan chron setiap hari). Namun, Anda dapat mempercepat perintah jika Anda menghindari grep pipa.

Lihat lokasi pria :

-c, --count
       Instead  of  writing  file  names on standard output, write the number of 
       matching entries only.

Jadi perintah tercepat adalah:

locate -c -r '/path/to/dir'

Linux
  1. Bagaimana cara menghitung jumlah file di setiap direktori?

  2. Bagaimana cara mentransfer file antara Linux dan Android dengan cara yang cepat dan andal?

  3. Apakah ada cara untuk membuat ext-filesystem menggunakan lebih sedikit ruang untuk dirinya sendiri di Linux?

  1. Bisakah saya meningkatkan jumlah inode di Linux?

  2. Cara lebih cepat untuk menghapus sejumlah besar file

  3. Menyalin file tersembunyi secara rekursif - Linux

  1. Cara Meningkatkan Jumlah Batas File Terbuka di Linux

  2. Apa Cara Terbaik Untuk Menghitung Jumlah File Dalam Direktori?

  3. Jumlah maksimum file/direktori di Linux?