Puedo encontrar el número de todos los archivos en la carpeta pero obtuve un número bastante grande.
find . -type f | wc -l #find number of files in DIR
ls -lrt #list all files order by date
¿Cómo encontrar el número de archivos por día?
Entonces, el resultado debería ser algo como:
# 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
fuente
fuente
109294
y109294
Respuestas:
Puede hacer esto usando la
printf
acción defind
imprimir solo los tiempos de modificación en el formato deseado, y luego usandosort
yuniq
:-printf '%TY-%Tm-%Td\n'
imprime el tiempo de modificación de archivos en, por ejemplo,2015-05-23
formatosort
ordena la salida yuniq -c
cuenta por fechaEjemplo:
fuente
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"
Aquí hay una solución con
find
+awk
Esencialmente, lo que sucede es que encontramos todos los archivos regulares e imprimimos su tiempo de modificación según lo especificado por el
%T
formato, y luego seawk
hace cargo y cuenta cada línea utilizando matrices asociadas. laEND{}
declaración utiliza elfor
bucle para recorrer todos los elementos en la matriz asociada e imprimir el contenido de la clave + matriz [clave] (que es la fecha + recuento).Es posible que desee utilizar
sort
para organizar la salida, particularmente ensort -k 1
función de la columna 1 (que es la fecha), pero eso es opcional. También-maxdepth 1
buscará archivos solo en la carpeta actual . Si también desea encontrar archivos en subdirectorios, elimine-maxdepth 1
parte.Salida de muestra
fuente
|sort | uniq -c
versión, especialmente con un gran número de archivos y un conjunto pequeño de días diferentes. Al colapsar para contar en un solo paso, se evita ordenar una gran cantidad de duplicados antes de contar.