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

Ankur
la source

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)

même
la source
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.

éphémère
la source
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
ayush
la source
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
5

find ./ -cTime -1 -type f

OU

find ./ -cmin -60 -type f

gwecho huang
la source
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.

pas du tout
la source
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.

Jamre Ludhi
la source