2012-03-16 21 views
6

Estoy tratando de obtener un recuento de cuántos archivos PDF se crearon el mes pasado. Estoy usando el siguiente comando pero se está volviendo 0obtener el número de archivos modificados el mes pasado

find . -name '*.pdf' -mtime +46 ! -mtime +30 | wc -l 

estoy en el directorio correcto y parece que la lógica es correcta ... alguna idea de por qué esto no está funcionando? ¿Hay una manera más fácil, digamos de pasar el mes específico que estoy buscando en lugar de tratar de calcular días como este?

Respuesta

21

Usted está encontrando todos los archivos pdf: hace

  • 46 días hace
  • no 30 día

    x>46 && x<=30 --> false 
    

resultado vacío Se volverá.


Numeric arguments can be specified as 
    +n  for greater than n, 
    -n  for less than n, 
    n  for exactly n. 

Si usted quiere encontrar todos pdf archivos (30<x<46):

$ find . -name '*.pdf' -mtime +30 -mtime -46 
+0

[Hay 3 tipos de "marcas de tiempo"] (https://unix.stackexchange.com/a/2465/209677): tiempo de acceso ('atime'), tiempo de cambio (' ctime') y tiempo de modificación ('mtime'). ¿Por qué usas 'mtime' en lugar de' ctime'? –

6

Parece que está en busca de archivos que tengan más de 46 días, pero no más (es decir, menor que) 30 dias.

¿Qué tal esto?

find . -name '*.pdf' -mtime -46 -mtime +30 
8

Si estás usando GNU find puede especificar las fechas absolutas como este:

find . -name '*.pdf' -newermt 2012-01-31 ! -newermt 2012-02-29 | wc -l 

La opción -newermt encontrará archivos que han sido modificados más recientemente que un tiempo absoluto.

Si no se está usando GNU, puede utilizar touch para crear dos archivos con las marcas de tiempo apropiados y encontrar sus archivos PDF como esto:

touch -t 201201312359 oldest # 11:59 PM 1/31/2012 
touch -t 201203010000 newest # midnight 3/1/2012 
find . -name '*.pdf' -newer oldest ! -newer newest | wc -l 

Véase el GNU documentation para más detalles.

+0

¡Gracias por el consejo! Esto funciona con 4.3.3+ (24 de enero de 2009), por lo que no está disponible en sistemas anteriores (como RHEL 5). – Nickolay

Cuestiones relacionadas