J'ai un répertoire contenant un grand nombre de fichiers (comme des journaux pour chaque jour de l'année). Je voudrais supprimer tous les fichiers créés avant disons le 22/11. Comment puis-je y parvenir? Dois-je utiliser find
puis exec -rm
? J'utilise ksh.
L'utilisation de find
est toujours le moyen préféré de supprimer des fichiers. Voir http://mywiki.wooledge.org/UsingFind pour en savoir plus.
Une façon de procéder consiste à créer un fichier contenant l'horodatage. par exemple
touch -t 201311220000 /tmp/timestamp
Supprimez maintenant les fichiers GNU find
(en supposant dans le répertoire courant) qui correspondent à l'horodatage, par exemple:
find . -type f ! -newer /tmp/timestamp -delete
ou non GNU find
find . -type f ! -newer /tmp/timestamp -exec rm {} \;
Avec GNU ou certains BSD find
s:
find . ! -newermt 2013-11-22 ! -type d -delete
Notez qu'il vérifie la dernière heure de modification des fichiers. Sur certains BSD, vous pouvez utiliser -newerBt
au lieu de -newermt
pour vérifier l'inode du fichier naissance heure si disponible à la place.
find /path/to/directory/ -mtime +<number of days> -name '<file name>' -exec rm -rf {} \;
exemple:
find /Netap_fileshare_backup/SQL/DB_backups/xeo/ -mtime +15 -name 'ORA_XEO*' -exec rm -rf {} \;
Dans ce cas, tous les fichiers commençant par "ORA_XEO" avec plus de 15 jours seront supprimés.