Tengo windows 7 box con cygwin instalado. Tengo varias carpetas con archivos, dentro de una única carpeta raíz. Quiero encontrar la lista de archivos que tienen una marca de tiempo dentro de un rango de fecha y hora específico.
Respuesta1
Puedes usar el find
comando con la -newerXY
opción.
Deman find
:
-nuevoXYreferencia
Compara la marca de tiempo del archivo actual conreferencia. ElreferenciaEl argumento normalmente es el nombre de un archivo (y una de sus marcas de tiempo se usa para la comparación), pero también puede ser una cadena que describe un tiempo absoluto.XyYson marcadores de posición para otras letras, y estas letras seleccionan qué tiempo pertenece a quéreferenciase utiliza para la comparación.
Los valores posibles paraXyYson como sigue:
- a - hora del último acceso al archivo actual oreferencia
- B - hora de nacimiento del archivo actual oreferencia
- c - hora del último cambio de estado del inodo del archivo actual oreferencia
- m - hora de la última modificación del archivo actual oreferencia
- t -referenciaes una cadena que representa una marca de tiempo (no válida paraX)
Xse refiere al archivo actual yYhaciareferencia, por lo que querrás usar 'm' para la primera letra (fecha de modificación del archivo actual) y 't' para la segunda (marca de tiempo pasada como una cadena). Guión de ejemplo:
find . -type f -newermt "2012-05-01" ! -newermt "2012-05-15"
Esto busca todos los archivos que se modificaron entre el 1 y el 15 de mayo de 2012. El operador !
(lógico NOT
) invierte el significado del argumento que le sigue: si -newerXY
significa "X es más nuevo que Y", entonces ! -newerXY
significa "X es más antiguo que Y".
Una opción alternativa, ya que estás en Windows, es usar Powershell. ElGet-ChildItem
cmdlet devuelve todos los archivos en una carpeta determinada (de forma recursiva, si se desea), y elWhere-Object
cmdlet le permite filtrar la salida de otros comandos. Script de ejemplo (asumiendo que el directorio que desea buscar es el directorio actual):
Get-ChildItem -Recurse | Where-Object { $_.LastWriteTime -ge "2012-05-01" -and $_.LastWriteTime -le "2012-05-15" -and !$_.PSIsContainer }
Esto devuelve todos los archivos modificados entre el 1 y el 15 de mayo de 2012. Puede utilizar CreationTime
en lugar de LastWriteTime
para comprobar la hora de creación del archivo. El !$_.PSIsContainer
filtro solo devuelve archivos ( PSIsContainer
es cierto para las carpetas y el signo de exclamación es nuevamente el NOT
operador lógico).
Respuesta2
Puedes usarGerente lejano, Find File
con filtro:
Presione el botón de filtro y presione Insert
para insertar un nuevo filtro:
Nombra el filtro de alguna manera, ingresa la máscara del archivo, marca Date/Time
, selecciona el valor change
, desmarca Relative
e ingresa los rangos de fecha/hora:
Presiona Aceptar y, en Filters menu
, presiona space
para seleccionar el filtro ( +
debería aparecer al lado del filtro):
Presione enter y presione Find
:
Resultados de la búsqueda (en este ejemplo, fotos - máscara IMG_*.jpg
- rango de fechas para junio de 2022):
Respuesta3
También es posible encontrar esos archivos con GUI File Explorer. Algunos ejemplos:
datemodified:2015-02-18 08:00..2015-02-18 13:00
datemodified:>2015-02-18 08:00
datemodified:<2015-02-18 08:00
Y algunas lecturas adicionales: Consejos avanzados para buscar en Windows, Uso de la sintaxis de consulta avanzada mediante programación