Saya ingin menghitung jumlah file untuk setiap ekstensi dalam direktori serta file tanpa ekstensi.
Saya telah mencoba beberapa opsi, tetapi saya belum menemukan solusi yang berfungsi:
find "$folder" -type f | sed 's/.*\.//' | sort | uniq -c
adalah opsi tetapi tidak berfungsi jika tidak ada ekstensi file. Saya perlu tahu berapa banyak file yang tidak memiliki ekstensi.Saya juga telah mencoba menemukan loop ke dalam array dan kemudian menjumlahkan hasilnya, tetapi saat ini kode itu melempar kesalahan variabel yang tidak dideklarasikan, tetapi hanya di luar loop:
declare -a arr arr=() echo ${arr[@]}
Ini melempar variabel yang tidak dideklarasikan, serta setelah loop pencarian selesai.
command-line
find
extension
bocah traktor
sumber
sumber
ext = [ f.split('.')[-1] for f in os.listdir('./') ]
Thatll membuatnya lebih pendek beberapa baris dan mungkin lebih PythonicJika Anda memiliki GNU awk, Anda dapat melakukan sesuatu seperti
yaitu membangun / menambah array asosiatif yang dikunci pada
.
bidang yang dipisahkan terakhir , atau string tetap sewenang-wenang seperti(none)
jika tidak ada ekstensi.mawk
tampaknya tidak mengizinkan pemisah rekaman bita nol - Anda dapat menggunakanmawk
pemisah baris baru default jika Anda yakin bahwa Anda tidak perlu berurusan dengan baris baru dalam nama file Anda:sumber
Dengan tugas dasar
/bin/sh
atau bahkanbash
bisa sedikit sulit, tetapi seperti yang Anda lihat di jawaban lain alat yang dapat bekerja pada data agregat dapat menangani tugas tersebut sangat mudah. Salah satu alat tersebut adalahsqlite
database.Proses yang sangat sederhana untuk menggunakan
sqlite
database adalah membuat.csv
file dengan dua bidang: nama file dan ekstensi. Nantisqlite
dapat menggunakan pernyataan agregat sederhanaCOUNT()
denganGROUP BY ext
untuk melakukan penghitungan file berdasarkan bidang ekstensisumber
files_tb
tabel saya pikir sedang direferensikan tetapi kolom tabel tidak didefinisikan di mana pun saya bisa melihat?printf
dilakukan. Dan SQLite akan secara default memperlakukan baris pertama file csv sebagai nama kolom.Menggunakan PowerShell jika itu opsi:
atau lebih pendek, menggunakan alias:
sumber