Je souhaite rechercher des fichiers dont la date de création est antérieure à celle d'aujourd'hui.
Je fais :
find $HOME -type f -name "myFile_*.sql.Zip" -mtime +1
mais il ne renvoie rien, il devrait au moins renvoyer un fichier.
Où est-ce que je me trompe?
find
avec -mtime +1
renvoie les fichiers modifiés il y a deux jours ou plus.
C’est un comportement documenté, c’est-à-dire que -mtime
ignore toute partie fractionnaire. De man find
(Le calcul du temps est identique dans -atime
, -mtime
et -ctime
):
-au moment n
Le fichier a été consulté pour la dernière fois il y a n * 24 heures. Lorsque find a déterminé combien de fois le fichier avait été accédé il y a 24 heures, toute fraction est ignorée. Par conséquent, pour correspondre à -atime +1, un fichier doit avoir été utilisé il y a au moins deux jours.
Maintenant, si vous pouvez utiliser quelques solutions:
Tu peux faire:
find . -type f -mtime +0
Cela vous ferait modifier les fichiers il y a un jour ou plus.
Dans ton cas:
find $HOME -type f -name "myFile_*.sql.Zip" -mtime +0
Pour obtenir une précision comme dans ce cas, vous devez utiliser l’option -mmin
qui correspond strictement aux minutes.
Supposons donc que vous souhaitiez obtenir les fichiers modifiés plus de 7 heures et 10 minutes, c'est-à-dire il y a 430 minutes, vous pouvez effectuer les opérations suivantes:
find . -type f -mmin +430
Dans votre cas, effectuez le calcul et remplacez 430
par cette valeur:
find $HOME -type f -name "myFile_*.sql.Zip" -mtime +430
Une autre option est de le faire à l’inverse.
Vous pouvez créer un fichier de référence, par exemple. ref.txt
:
touch -d 'today + 2 days ago' ref.txt
Vous pouvez maintenant trouver les fichiers modifiés plus récemment que ref.txt
:
find . -type f -newer ref.txt
Dans ton cas:
find $HOME -type f -name "myFile_*.sql.Zip" -newer ref.txt
Une fois que vous êtes satisfait des résultats, vous pouvez supprimer le ou les fichiers, par exemple:
find . -type f -mmin +430 -delete