web-dev-qa-db-fra.com

Supprimer des fichiers de plus de X minutes

Je souhaite supprimer les fichiers de plus de 59 minutes. J'ai ceci jusqu'à présent:

find /tmp -daystart -maxdepth 1 -mmin +59 -type f -name "*.*" -exec rm -f {} \;

Cela ne fonctionne pas et semble supprimer tous les fichiers. J'ai testé cela plusieurs fois et je pense que le problème est lié à daystart.

J'ai lu la page de manuel et elle semble se baser sur le début de la journée plutôt que sur 24 heures auparavant. Si tel est le cas, comment puis-je supprimer avec précision des fichiers de plus de 59 minutes? Dois-je tenir compte de daystart et ajouter quelques minutes de plus?

Exemple:

ubuntu@ip-10-138-30-118:/tmp$ ls -la
total 8
drwxrwxrwt  2 root   root   4096 Jul 20 14:39 ./
drwxr-xr-x 23 root   root   4096 Jun 25 18:34 ../
-rw-rw-r--  1 ubuntu ubuntu    0 Jul 20 12:35 a.txt

Les deux commandes suivantes retournent le fichier:

ubuntu@ip-10-138-30-118:/tmp$ find /tmp -daystart -maxdepth 1 -mmin +59 -type f -name "*.*"
/tmp/a.txt

Et:

ubuntu@ip-10-138-30-118:/tmp$ find /tmp -daystart -maxdepth 1 -mmin +359 -type f -name "*.*"
/tmp/a.txt

Cependant, le fichier n'a pas plus de 659 minutes (10,9 heures)! Mais à 759 (12,65 heures), il ne retourne plus le fichier?

19
Abs

Lorsqu'il est utilisé avec -mmin, -daystart semble le faire calculer à partir du fin d'aujourd'hui, pas du début.

Si vous souhaitez simplement rechercher des fichiers modifiés il y a plus de 59 minutes, vous n'avez pas besoin de cette option. -mmin calcule à partir de l'heure actuelle par défaut.

barmar@dev:~/testdir$ date
Sat Jul 20 10:02:20 CDT 2013
barmar@dev:~/testdir$ ls -l
total 0
-rw-r--r-- 1 barmar adm 0 Jul 20 09:57 a.txt
barmar@dev:~/testdir$ find . -maxdepth 1 -mmin +2 -type f
./a.txt
barmar@dev:~/testdir$ find . -maxdepth 1 -mmin +10 -type f
22
Barmar

cela devrait fonctionner pour vous

find /path -mmin +59 -type f -exec rm -fv {} \;

3
matson kepson