Comment trouver les fichiers créés au cours de la dernière heure sous Unix


135

Comment trouver les fichiers créés au cours de la dernière heure sous Unix

Réponses:


213

Si le répertoire à rechercher est srch_diralors soit

$ find srch_dir -cmin -60 # change time

ou

$ find srch_dir -mmin -60 # modification time

ou

$ find srch_dir -amin -60 # access time

affiche les fichiers créés, modifiés ou consultés au cours de la dernière heure.

correction: ctime est pour changer l'heure du nœud (pas sûr, veuillez me corriger)


2
C'est génial et tout, mais ces indicateurs n'existent pas sur Solaris findque j'utilise. OP a dit Unix et je pense que ce sont uniquement Linux.
jiggy

12
L'astuce consiste à utiliser des valeurs de temps négatives ! Ce n'est pas si évident dans la page de manuel.
sphakka

La réponse de @jiggy Ayush donne un hack (basé sur -newer) qui devrait fonctionner sur Solaris.
David Moles

3
-cmin n'est PAS l'heure de création mais l'heure de changement! je viens de supprimer mon .config dir car lors du test, il n'a pas été changé au cours des X dernières minutes et quand j'ai fait rm c'était .... alors peut-être éditer ceci ...!
Badmaster

Je pense toujours que le premier commentaire d'exemple a besoin d'une révision. "heure de changement" est l'état du fichier, pas les données du fichier
KC Baltz

24

Les systèmes de fichiers UNIX (généralement) ne stockent pas les heures de création. Au lieu de cela, il n'y a que l'heure d'accès, l'heure de modification (des données) et l'heure de changement (inode).

Cela étant dit, finda des -atime -mtime -ctimeprédicats:

$ homme 1 trouver
...
-ctime   n
        Le primaire doit être évalué comme vrai si l'heure du dernier changement de
        les informations sur l'état du fichier soustraites de l'heure d'initialisation,
        divisé par 86400 (avec tout reste rejeté), est n.
...

Ainsi find -ctime 0trouve tout ce pour lequel l'inode a changé (par exemple, inclut la création de fichier, mais compte également le nombre de liens et les autorisations et le changement de taille de fichier) il y a moins d'une heure.


86400 secondes, c'est un jour , pas une heure. Ainsi l'argument de -ctimeetc est en unités de jours plutôt qu'en heures.
Gaylon

12

consultez ce lien , puis aidez-vous.

le code de base est

#create a temp. file
echo "hi " >  t.tmp
# set the file time to 2 hours ago
touch -t 200405121120  t.tmp 
# then check for files
find /admin//dump -type f  -newer t.tmp -print -exec ls -lt {} \; | pg

Merci, cependant, cela ne recherchera que t.tmp. Que faire si je veux trouver tous les fichiers créés au cours de la dernière heure.
Ankur

2
Ankur: il créera un fichier temporaire t.tmp et fixera son heure de création à il y a 2 heures ... après cela il cherchera dans le répertoire actuel tous les fichiers qui ont été créés après t.tmp c'est-à-dire au cours des 2 dernières heures ..
ayush

4
cool!! Bien que la première commande ne soit pas nécessaire. touchcrée le fichier s'il n'existe pas déjà.
Amir Uval


3
sudo find / -Bmin 60

Depuis la manpage:

-Bmin n

Cette propriété a la valeur True si la différence entre l'heure de création d'un inode d'un fichier et l'heure de finddémarrage, arrondie à la minute complète suivante, est de n minutes.

Évidemment, vous voudrez peut-être configurer un peu différemment, mais ce primaire semble la meilleure solution pour rechercher n'importe quel fichier créé au cours des N dernières minutes.


find (GNU findutils) 4.6.0n'a pas de -Bprédicat
blockloop

0

Consultez ce lien pour plus de détails.

Pour trouver les fichiers créés au cours de la dernière heure dans le répertoire courant, vous pouvez utiliser -amin

trouver . -amin -60 -type f

Cela trouvera les fichiers créés au cours de la dernière heure.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.