usando find para localizar nombres de archivos antes de una fecha determinada

1

Tengo un montón de archivos que son directorios con marca de tiempo. Todo esto parece

2011-06-24_13.53.36  // a directory name for june 24th, 1:53:36 pm

Tengo miles de estos directorios. Quiero hacer operaciones en algunos de los más antiguos. Digamos que le doy una cadena para la fecha y hora que coincide con ese formato exacto, como si fuera a darle

2011-06-25_00.00.00 // june 25th, 12am

Quiero encontrar todos los directorios ANTES de mi tiempo. Entonces, si doy la cadena para las 12 am del 25 de junio, quiero encontrar todos los directorios antes de eso.

¿Se puede hacer esto usando find?

Si no, puedo encontrar CADA directorio que tengo así y luego filtrar después de las salas. Las fechas creadas / modificadas no están vinculadas a la marca de tiempo real que estoy buscando (eso facilitaría esto)


fuente
No creo que puedas usar find para esto, al menos no directamente. Si son solo miles de carpetas y no cientos de miles o millones, probablemente sería más fácil simplemente revisar cada carpeta y verificar su nombre campo por campo. En un guión *

Respuestas:

1

Este formato es ordenable por cadenas, por lo que podría hacer una comparación de cadenas en las cadenas del mismo formato.

No sé si / cómo findpuedo hacer esto, pero aquí hay un posible ejemplo de Perl (si todas las carpetas están en la misma ubicación y tienen el mismo formato):

perl -E "-d && $_ lt '2011-06-25_00.00.00' && say while <*>"

Salida:

2011-05-28_00.00.00

(Lo cual es correcto para mi pequeña prueba).

Qtax
fuente
1

Una forma peculiar:

  • Suponiendo que solo tiene estos directorios en el directorio de trabajo
  • Estás en bash o similar

El siguiente comando debería darle una lista de archivos "alfabéticamente más antiguos" que el 25 de junio.

ls -l | head -`ls -l | grep -n 2011-06-24 | cut -d: -f1`

Ahora tenga en cuenta que el criterio del patrón de nombre es 2011_06_24 (para evitar 2011_06_25 en el resultado)

portador del anillo
fuente