web-dev-qa-db-fra.com

Supprimer les fichiers créés avant aujourd'hui

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?

2
user1260928

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:

  1. 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
    
  2. 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
    
  3. 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
4
heemayl