Saya ingin perintah BASH untuk mencantumkan hanya jumlah file di setiap subdirektori direktori.
Misalnya dalam direktori /tmp
ada dir1
, dir2
, ... saya ingin lihat:
`dir1` : x files
`dir2` : x files ...
Dengan anggapan Anda hanya menginginkan jumlah file rekursif, bukan direktori dan tipe lainnya, sesuatu seperti ini seharusnya berfungsi:
find . -maxdepth 1 -mindepth 1 -type d | while read dir; do
printf "%-25.25s : " "$dir"
find "$dir" -type f | wc -l
done
find
...-print0 | xargs -0
....bash
alias
!!sort -rn -k 2,2 -t$':'
Anda mendapatkan daftar DESCTugas ini sangat memesona saya sehingga saya ingin mencari solusi sendiri. Bahkan tidak memerlukan waktu beberapa saat dan MUNGKIN lebih cepat dalam kecepatan eksekusi. Tak perlu dikatakan, upaya Thor banyak membantu saya untuk memahami hal-hal secara rinci.
Jadi ini milik saya:
Itu terlihat sederhana karena suatu alasan, karena jauh lebih kuat daripada kelihatannya. :-)
Namun, jika Anda bermaksud untuk memasukkan ini ke dalam
.bash_aliases
file Anda , itu harus terlihat seperti ini:Perhatikan penanganan kutipan tunggal bersarang yang sangat rumit . Dan tidak, tidak mungkin menggunakan tanda kutip ganda untuk
sh -c
argumen.sumber
strace -fc script
. Versi Anda membuat sekitar 70% lebih banyak panggilan sistem. +1 untuk kode yang lebih pendek :-)find . -maxdepth 1 -mindepth 1 -type d -exec sh -c 'echo "$(find "{}" -type f | wc -l)" {}' \; | sort -nr
Daftar folder dan file di folder saat ini dengan jumlah file yang ditemukan di bawah. IMO cepat dan bermanfaat. (file tampil dengan hitungan 1).
sumber
| sort -rn
untuk mengurutkan subdir berdasarkan jumlah file.Menggunakan find jelas merupakan cara untuk pergi jika Anda ingin menghitung secara rekursif, tetapi jika Anda hanya ingin menghitung file secara langsung di bawah direktori tertentu:
ls dir1 | wc -l
sumber
ls -d */ | xargs -n1 ls | wc -l
(Namun, gunakan jawaban yang Anda terima jika sudah berfungsi! Ini hanya Dan Sekarang Anda Tahu.)find
sangat penting. (Apalagi-print0
danxargs -0
, sudah ditunjukkan oleh Scott dalam jawaban lain)Saya sering perlu menghitung jumlah file dalam sub-direktori saya dan menggunakan perintah ini. Saya lebih suka penghitungan muncul terlebih dahulu.
sumber
Apa yang saya gunakan ... Ini membuat array dari semua subdirektori dalam yang Anda berikan sebagai parameter. Cetak subdirektori dan jumlah subdirektori yang sama hingga semua subdirektori diproses.
sumber
Anda bisa menggunakan kode python ini. Boot penerjemah dengan menjalankan
python3
dan menempelkan ini:Atau versi rekursif untuk penghitungan bersarang:
Contoh output:
sumber