Hoy voy a postear un minitip que pensé que conocia más gente pero estoy viendo que no es así: La forma de buscar con find, desde una fecha u hora determinadas.
Una de las carencias que nos podemos encontrar con la orden find en los sistmemas *nix (Linux y OsX incluidos) es que si nos disponemos a buscar desde una fecha determinada nos llevaremos un chasco puesto que comienza a contar dias atrás desde las 00h no desde la hora actual. Más grave aún, si queremos hacerlo desde una hora determinada ya que no nos los permite de niguna manera… bueno, miento, hay una que si nos permite y con la exactitud que queramos incluso en segundos.
Para realizarlo, hay que hacer algun paso extra pero como vereis ahora, son muy sencillos. Estos son los pasos que vamos a realizar:
– Creamos un fichero con la fecha y hora desde la que queramos buscar
– Invocamos el find con el argumento -newer (A este argumento hay que pasarle un fichero del cual tomará como referencia minima, la hora y la fecha que tenga)
Así pues con este paso extra, podremos decirle desde cuando queremos buscar y ahora que ya sabemos lo que vamos a hacer… hagámoslo!!
# Primero creamos el fichero pasando el tiempo en formato timestamp (Año mes dia hora minutos . segundos)
touch -t 201309021810.00 fichero_ejemplo
# Y ahora le pasamos el parámetro -newer a find con el fichero creado como punto temporal
find . -type f -newer fichero_ejemplo # Añadiendo -type f, solo mostrará ficheros
Si por el contrario, lo que queremos es que los resultados sean anteriores a la fecha dada, es decir, más viejos, no, no es older, no existe un argumento older, que seria lo lógico sino que habria que negar el argumento -newer, y ¿como se negaba en informática? con el signo de cerrar admiración «!». Veamos el ejemplo contrario:
# Para buscar ficheros más viejos que la fecha y horas facilitadas en el fichero seria:
find . -type f ! -newer fichero_ejemplo
Y ya está… con esto encontrareis cualquier cosa 🙂