Saya dapat menemukan jumlah semua file dalam folder tetapi saya mendapat jumlah yang cukup besar.
find . -type f | wc -l #find number of files in DIR
ls -lrt #list all files order by date
Bagaimana menemukan jumlah file setiap hari?
Jadi, hasilnya harus seperti:
# left number is number of files and right is one day.
109294 2016-06-27
101555 2016-06-26
88123 2016-06-25
... etc.
command-line
find
tasmaniski
sumber
sumber
109294
dan109294
Jawaban:
Anda dapat melakukan ini menggunakan
printf
tindakanfind
untuk hanya mencetak waktu modifikasi dalam format yang diinginkan, dan kemudian menggunakansort
danuniq
:-printf '%TY-%Tm-%Td\n'
mencetak waktu modifikasi file dalam2015-05-23
format misalnyasort
mengurutkan output danuniq -c
menghitung berdasarkan tanggalContoh:
sumber
find . -type f -printf '%TY-%Tm-%Td\n' 2</dev/null | sort | uniq -c | tail -n +2 | gnuplot -p -e "set xdata time; set timefmt \"%Y-%m-%d\";set xtics rotate; plot '-' using 2:1 with impulses"
Inilah solusi dengan
find
+awk
Pada dasarnya yang terjadi adalah kami menemukan semua file biasa dan mencetak waktu modifikasinya seperti yang ditentukan oleh
%T
format, dan kemudianawk
mengambil alih, dan menghitung setiap baris menggunakan associate array. yangEND{}
menggunakan pernyataanfor
loop untuk pergi melalui semua elemen dalam array terkait, dan mencetak kunci + array [kunci] isi (yang merupakan tanggal + count).Anda mungkin ingin menggunakan
sort
untuk mengatur output, terutamasort -k 1
berdasarkan kolom 1 (yang tanggal), tetapi itu opsional. Juga-maxdepth 1
akan memeriksa file hanya di folder saat ini . Jika Anda ingin mencari file di subdirektori juga, hapus-maxdepth 1
bagian.Output sampel
sumber
|sort | uniq -c
versi, terutama dengan jumlah file yang sangat besar dan satu set hari yang berbeda. Runtuh ke penghitungan dalam satu langkah menghindari menyortir sejumlah besar duplikat sebelum menghitung.