Comment puis-je trouver des fichiers qui ont changé entre certains moments?

1

J'ai Windows 7 Box avec Cygwin installé. J'ai plusieurs dossiers avec des fichiers, dans un dossier racine unique. Je veux trouver la liste des fichiers qui ont un horodatage dans une plage de date / heure spécifique.

dublintech
la source
Mon meilleur effort est: ls -Rlt
dublintech

Réponses:

2

Vous pouvez utiliser le find commande avec le -newerXY option.

De man find:

-newerXY référence
Compare l'horodatage du fichier en cours avec référence . le référence argument est normalement le nom d'un fichier (et l'un de ses horodatages est utilisé pour la comparaison), mais il peut également s'agir d'une chaîne décrivant une heure absolue. X et Y sont des espaces réservés pour les autres lettres, et ces lettres sélectionnent l'heure à laquelle référence est utilisé pour la comparaison.

Les valeurs possibles pour X et Y sont les suivants:

  • a - heure du dernier accès au fichier en cours ou référence
  • B - heure de naissance du fichier actuel ou référence
  • c - heure de changement d'état du dernier inode du fichier actuel ou référence
  • m - heure de dernière modification du fichier en cours ou référence
  • t - référence est une chaîne représentant un horodatage (non valide pour X )

X fait référence au fichier en cours et Y au référence vous voudrez donc utiliser "m" pour la première lettre (date de modification du fichier en cours) et "t" pour la seconde (horodatage transmis sous forme de chaîne). Exemple de script:

find . -type f -newermt "2012-05-01" ! -newermt "2012-05-15"

Tous les fichiers modifiés entre le 1er et le 15 mai 2012 sont retrouvés. ! (logique NOT ) l’opérateur inverse le sens de l’argument qui le suit - si -newerXY signifie "X est plus récent que Y", alors ! -newerXY signifie "X est plus vieux que Y".


Puisque vous êtes sous Windows, vous pouvez également utiliser Powershell. le Get-ChildItem La cmdlet renvoie tous les fichiers d’un dossier donné (de manière récursive, le cas échéant) et le Where-Object L'applet de commande vous permet de filtrer la sortie d'autres commandes. Exemple de script (en supposant que le répertoire que vous souhaitez rechercher est le répertoire actuel):

Get-ChildItem -Recurse | Where-Object { $_.LastWriteTime -ge "2012-05-01" -and $_.LastWriteTime -le "2012-05-15" -and !$_.PSIsContainer }

Tous les fichiers modifiés entre le 1er et le 15 mai 2012 sont renvoyés. Vous pouvez utiliser CreationTime au lieu de LastWriteTime pour vérifier l'heure de création du fichier à la place. le !$_.PSIsContainer le filtre ne renvoie que les fichiers ( PSIsContainer est vrai pour les dossiers, et le point d'exclamation est encore la logique NOT opérateur).

Indrek
la source
-1

Il est également possible de trouver ces fichiers avec l’explorateur de fichiers GUI. Quelques exemples:

datemodified:2015-02-18 08:00..2015-02-18 13:00
datemodified:>2015-02-18 08:00
datemodified:<2015-02-18 08:00

Et quelques lectures supplémentaires: Conseils avancés pour la recherche dans Windows , Utilisation de la syntaxe de requête avancée par programme

mirekbarton
la source
Nous attendons des réponses de haute qualité ici à Superuser ce qui signifie que les réponses devraient inclure TOUTES les informations pertinentes, pas seulement des liens vers des ressources externes.
Ramhound
Désolé, j'ai juste essayé d'être utile ...
mirekbarton