La solicitud es solo un recuento básico de archivos en directorios específicos. Mi proceso actual usando ipswitch:

  1. Copiar archivos del mes de marzo a mi directorio local (Windows)
  2. Ordenar por nombre y, si es necesario, eliminar archivos que no necesito contar (desde mi local)
  3. Seleccione todos o archivos específicos, vea el total e ingréselo en una hoja de cálculo que mantengo.

La hoja de cálculo es para informes mensuales sobre entregables ...

Conozco algunos conceptos básicos de Unix / Linux como la navegación de directorios, algo sobre grep y casi nada sobre find.

No puedo entender cómo buscar archivos en un directorio dentro de un rango de fechas específico, por mes, y contar cuántos archivos ... a veces con nombres o extensiones específicos. pensé

ls -l |grep ...something something...

Podría funcionar, pero me he golpeado contra una pared.

Avíseme si necesita más información, lo siento mucho.

1
Emile 13 abr. 2017 a las 18:36

2 respuestas

La mejor respuesta

Puede usar find para filtrar y wc para contar.

find . -mtime -$start -mtime +$end | wc -l

Debido a la forma en que se trunca -mtime, y la naturaleza exclusiva de la comparación, al principio es un poco complicado acertar, pero factible.

find /some/path -mtime +0  # Find files modified prior to 1 day ago.
find /some/path -mtime -0  # Find files modified after 1 day ago.
find /some/path -mtime +1 -mtime -6 # Files modified between 2 and 7 days ago.

Por ejemplo, digamos que es el 2 de abril y quiere todo marzo. Su $ inicio sería 31, y su $ final sería 0.

Para ejecutar el mismo informe el 13 de abril, su $ start será 42 y su $ end será 13.

2
phatfingers 14 abr. 2017 a las 00:40

También puede usar la opción -newerXY para find para buscar archivos dentro (y debajo) de un directorio entre dos fechas directamente. El formato de fecha puede incluir una hora con fidelidad hasta el segundo (por ejemplo, "2017-04-13 21:35:58" o genéricamente "yyyy-mm-dd h:m:s")

La forma genérica de la opción es -newerXY donde XY puede ser uno de a tiempo de acceso, B hora de nacimiento, c tiempo de cambio de estado del inodo {{X5 }} tiempo de modificación y t interpretado directamente como tiempo.

Para buscar entre dos fechas determinadas (digamos para noviembre de 2016), puede usar una forma de find similar a:

find /path/to/files -type f -newermt "2016-10-30 23:59:59" \
! -newermt "2016-12-01 00:00:00"

Eso enumerará todos los archivos entre finales de octubre de 2016 y principios de diciembre de 2016 (por ejemplo, todos los archivos modificados en noviembre de 2016), donde

  • -type f limita la búsqueda a 'archivos', no a 'archivos y directorios'
  • -newermt "2016-10-30 23:59:59" archivos modificados después del último segundo de octubre
  • ! -newermt "2016-12-01 00:00:00" y no modificado después del último segundo de noviembre

Por supuesto, '\' es simplemente un carácter de continuación de línea utilizado para dividir la línea entre las pruebas de fecha para que no genere una barra de desplazamiento horizontal en esta respuesta; puede omitirlo y poner todo en una línea.

Si necesita contar los archivos, simplemente canalice la salida a wc -l como muestra phatfingers en su respuesta anterior. Una manera fácil de ordenar los archivos por fecha es simplemente usar find en sustitución de comando como argumento para ls -t (junto con cualquier otra opción para ls puede desear), por ejemplo:

$ ls -lrt $(find . -newermt 2016-10-30 ! -newermt 2016-12-01)
-rw-r--r-- 1 david david 3180 Nov  9 13:02 ./inventory2.c
-rw-r--r-- 1 david david  769 Nov 19 23:00 ./xfree.c
-rw-r--r-- 1 david david 1375 Nov 20 16:14 ./reallocprob.c
-rw-r--r-- 1 david david   98 Nov 21 00:39 ./hw.c
-rw-r--r-- 1 david david  530 Nov 25 23:10 ./tools2/tools.c
-rw-r--r-- 1 david david 1175 Nov 25 23:15 ./tools2/main.c
-rw-r--r-- 1 david david  174 Nov 25 23:16 ./tools2/tools.h
-rw-r--r-- 1 david david  424 Nov 26 00:28 ./tools/tsave.c
-rw-r--r-- 1 david david  106 Nov 26 01:34 ./tools/tools.h
-rw-r--r-- 1 david david  909 Nov 26 01:53 ./tools/main.c
-rw-r--r-- 1 david david  525 Nov 26 02:45 ./tools/tools.c
-rw-r--r-- 1 david david 1732 Nov 27 23:53 ./nogets.c
-rw-r--r-- 1 david david  530 Nov 30 22:17 ./resolution.c
4
David C. Rankin 14 abr. 2017 a las 02:49