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
ensuite exec -rm
? J'utilise ksh.
26
Réponses:
L'utilisation
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
Supprimez maintenant les fichiers GNU
find
(en supposant dans le répertoire courant) qui correspondent à l'horodatage, par exemple:ou trouver non GNU
la source
type -f
limite l'action aux fichiers uniquement.Avec GNU ou certains BSD
find
:Notez qu'il vérifie la dernière heure de modification des fichiers. Sur certains BSD, vous pouvez utiliser
-newerBt
à la place de-newermt
pour vérifier l' heure de naissance de l' inode du fichier si disponible à la place.la source
Exemple:
Dans ce cas, il supprimera tous les fichiers qui commencent par "ORA_XEO" avec plus de 15 jours.
la source
rm -rf
, la première commande supprimerait tout ce qui est contenu dans les répertoires antérieurs à ces 15 jours. (Aussi, pourquoi les parenthèses autour-name
?)example.jar
- il sera suppriméexample.cp
- il sera suppriméexample.tar
- il ne sera pas suppriméfind /path/to/directory/ -mtime +<number of days> \( -name '*.jar' -o -name '*.cp' \) -name 'ex*' -exec rm -rf {} \;
find
vous devez utiliser le-daystart
modificateur pour contraindre la-mtime
valeur à minuit.