Ich kann die Anzahl aller Dateien im Ordner finden, aber ich habe eine ziemlich große Anzahl.
find . -type f | wc -l #find number of files in DIR
ls -lrt #list all files order by date
Wie finde ich die Anzahl der Dateien pro Tag?
Das Ergebnis sollte also ungefähr so aussehen:
# 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
quelle
quelle
109294
und109294
Antworten:
Sie können dies mit der mit
printf
Wirkungfind
nur die Änderungszeiten in gewünschtem Format zu drucken, und dann mitsort
unduniq
:-printf '%TY-%Tm-%Td\n'
druckt die Änderungszeit von Dateien im zB2015-05-23
Formatsort
sortiert die Ausgabe unduniq -c
zählt nach DatumBeispiel:
quelle
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"
Hier ist eine Lösung mit
find
+awk
Im Wesentlichen finden wir alle regulären Dateien und drucken ihre Änderungszeit gemäß dem
%T
Format, übernehmen dannawk
und zählen jede Zeile mithilfe zugeordneter Arrays. DieEND{}
Anweisung verwendet einefor
Schleife, um alle Elemente im zugehörigen Array zu durchlaufen und den Inhalt von Schlüssel + Array [Schlüssel] (Datum und Anzahl) zu drucken.Möglicherweise möchten Sie
sort
die Ausgabe organisieren, insbesonderesort -k 1
basierend auf Spalte 1 (Datum). Dies ist jedoch optional. Außerdem-maxdepth 1
wird nur im aktuellen Ordner nach Dateien gesucht . Wenn Sie Dateien auch in Unterverzeichnissen suchen möchten, entfernen Sie das-maxdepth 1
Teil.Beispielausgabe
quelle
|sort | uniq -c
Version, insbesondere bei einer sehr großen Anzahl von Dateien und einer kleinen Anzahl unterschiedlicher Tage. Durch das Reduzieren auf die Anzahl in einem Schritt wird vermieden, dass eine große Anzahl von Duplikaten vor dem Zählen sortiert wird.