Trouvez les fichiers qui ont été modifiés au cours des dernières 24 heures

265

Par exemple, un serveur MySQL fonctionne sur ma machine Ubuntu. Certaines données ont été modifiées au cours des dernières 24 heures.

Quels scripts (Linux) peuvent trouver les fichiers qui ont été modifiés au cours des dernières 24 heures?

Veuillez énumérer les noms de fichiers, les tailles de fichiers et l'heure modifiée.

JackWM
la source
1
Vous pouvez utiliser stackoverflow.com/questions/4561895/…
vaugham

Réponses:

479

Pour rechercher tous les fichiers modifiés au cours des dernières 24 heures (dernière journée complète) dans un répertoire spécifique particulier et ses sous-répertoires:

find /directory_path -mtime -1 -ls

Devrait être à votre goût

L' -avant 1est important - cela signifie que tout a changé il y a un jour ou moins. Un +avant 1signifierait plutôt que quelque chose a changé il y a au moins un jour, alors qu'avoir rien avant 1cela signifierait qu'il a été changé il y a un jour, ni plus, ni moins.

Xavjer
la source
17
agréable! que diriez-vous des 2 dernières heures?
JackWM
114
utiliser "-mmin -120" au lieu de
mtime
1
pourquoi -avant la valeur numérique?
EsseTi
6
L'argument de -mtime est interprété comme le nombre de jours entiers dans l'âge du fichier. -mtime + n signifie strictement supérieur à, -mtime -n signifie strictement inférieur à.
Xavjer
3
Au lecteur: n'oubliez pas de supprimer le -lslors de l'utilisation dans un script
redolent
41

Vous pouvez le faire avec

find . -mtime 0

De man find:

[Le] temps écoulé depuis la dernière modification de chaque fichier est divisé par 24 heures et tout reste est supprimé. Cela signifie que pour correspondre à -mtime 0, un fichier devra avoir une modification dans le passé il y a moins de 24 heures.

Michael
la source
25

Une autre manière, plus humaine:

find /<directory> -newermt "-24 hours" -ls

ou:

find /<directory> -newermt "1 day ago" -ls

ou:

find /<directory> -newermt "yesterday" -ls
Maxim Egorushkin
la source
11

Sur les systèmes compatibles GNU (c'est-à-dire Linux):

find . -mtime 0 -printf '%T+\t%s\t%p\n' 2>/dev/null | sort -r | more

Cela répertorie les fichiers et répertoires qui ont été modifiés au cours des dernières 24 heures ( -mtime 0). Il les répertoriera avec la dernière heure modifiée dans un format à la fois triable et lisible par l'homme ( %T+), suivi de la taille du fichier ( %s), suivi du nom de fichier complet ( %p), chacun séparé par des tabulations ( \t).

2>/dev/nulljette toute sortie stderr, de sorte que les messages d'erreur ne brouillent pas les eaux; sort -rtrie les résultats en fonction de la dernière modification en premier; et | morerépertorie une page de résultats à la fois.

Stephen G Tuggy
la source
2
Vous pouvez également utiliser | lessau lieu de | more, je suppose.
Stephen G Tuggy
7

Pour ceux qui atterriront ici à l'avenir (y compris moi-même), ajoutez une option -name pour trouver des types de fichiers spécifiques, par exemple: find /var -name "*.php" -mtime -1 -ls

resedasue
la source
5

Cette commande a fonctionné pour moi

find . -mtime -1 -print
BhandariS
la source