166 votes

Comment trouver les fichiers qui ont été créés dans la dernière heure sous unix ?

Comment trouver les fichiers qui ont été créés dans la dernière heure sous unix ?

257voto

sameer Points 441

Si le répertoire à rechercher est srch_dir alors soit

$ find srch_dir -cmin -60 # change time

ou

$ find srch_dir -mmin -60 # modification time

ou

$ find srch_dir -amin -60 # access time

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

correction : ctime est pour change node time (pas sûr cependant, corrigez-moi s'il vous plaît)

2 votes

C'est très bien et tout, mais ces drapeaux n'existent pas sous Solaris. find que j'utilise. L'OP a dit Unix et je pense que ceux-ci sont uniquement pour Linux.

17 votes

L'astuce consiste à utiliser négatif valeurs temporelles ! Ce n'est pas si évident dans la page de manuel.

0 votes

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

25voto

ephemient Points 87003

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 le temps d'accès, le temps de modification (des données) et le temps de changement (d'inode).

Ceci étant dit, find a -atime -mtime -ctime prédicats :

$ man 1 [find](http://pubs.opengroup.org/onlinepubs/009695399/utilities/find.html)
...
**\-ctime**  _n_
        The primary shall evaluate as true if the time of last change of
        file status information subtracted from the initialization time,
        divided by 86400 (with any remainder discarded), is n.
...

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

1 votes

86400 secondes est un jour pas une heure. Ainsi, l'argument -ctime etc. est en unités de jours plutôt que des heures.

11voto

ayush Points 6352

Vérifier ce lien et ensuite, 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

0 votes

Merci, mais cette recherche ne porte que sur t.tmp. Que faire si je veux trouver tous les fichiers créés au cours de la dernière heure.

2 votes

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 recherchera dans le répertoire actuel tous les fichiers qui ont été créés après t.tmp, c'est-à-dire dans les 2 dernières heures....

4 votes

Cool ! Bien que la première commande ne soit pas nécessaire. touch crée le fichier s'il n'existe pas déjà.

8voto

Utilisez find pour lister les fichiers modifiés au cours de la dernière heure :

$ find . -mtime -1

le . est le chemin de recherche -mtime paramètre de temps -1 liste les fichiers modifiés dans les dernières 24 heures Autres paramètres

-amin quand le fichier a été accédé en minutes

-Date d'accès au fichier (en jours)

-cmin quand le fichier a été créé en minutes

-ctime quand le fichier a été créé en jours -mmin quand le fichier a été modifié en minutes Paramètres numériques :

-mtime -0.5

-1 les dernières 24 heures

-0,5 les 12 dernières heures

-0.25 les 6 dernières heures

+3 plus de trois jours

7voto

gwecho huang Points 176

find ./ -cTime -1 -type f

OU

find ./ -cmin -60 -type f

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X