Je peux trouver le nombre de tous les fichiers dans le dossier, mais j'ai obtenu un assez grand nombre.
find . -type f | wc -l #find number of files in DIR
ls -lrt #list all files order by date
Comment trouver le nombre de fichiers par jour?
Ainsi, le résultat devrait être quelque chose comme:
# 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
la source
la source
109294
et109294
Réponses:
Vous pouvez le faire en utilisant l'
printf
action defind
pour imprimer uniquement les heures de modification dans le format souhaité, puis en utilisantsort
etuniq
:-printf '%TY-%Tm-%Td\n'
imprime l'heure de modification des fichiers au2015-05-23
format par exemplesort
trie la sortie etuniq -c
fait le décompte par dateExemple:
la source
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"
Voici une solution avec
find
+awk
Ce qui se passe essentiellement, c'est que nous trouvons tous les fichiers normaux et imprimons leur heure de modification comme spécifié par le
%T
format, puisawk
prend le relais et compte chaque ligne à l'aide de tableaux associés. l'END{}
instruction utilise unefor
boucle pour parcourir tous les éléments du tableau associé et imprimer le contenu clé + tableau [clé] (qui est la date + le nombre).Vous pouvez utiliser
sort
pour organiser la sortie, en particulier ensort -k 1
fonction de la colonne 1 (qui est la date), mais cela est facultatif. Aussi-maxdepth 1
vérifiera les fichiers uniquement dans le dossier en cours . Si vous souhaitez également rechercher des fichiers dans des sous-répertoires, supprimez une-maxdepth 1
partie.Exemple de sortie
la source
|sort | uniq -c
version, en particulier avec un très grand nombre de fichiers et un ensemble de jours différents. Réduire en nombre en une seule étape évite de trier un grand nombre de doublons avant de compter.