Commande FIND -exec rm

Fermé
pcsystemd Messages postés 700 Date d'inscription dimanche 27 novembre 2005 Statut Membre Dernière intervention 29 juillet 2024 - Modifié le 3 août 2021 à 10:41
pcsystemd Messages postés 700 Date d'inscription dimanche 27 novembre 2005 Statut Membre Dernière intervention 29 juillet 2024 - 3 août 2021 à 16:00
Bonjour,

Je souhaite regrouper la suppression des fichiers suivants

v03_access.log.5*
v03_access.log.3*
v03_access.log.4*

Mais uniquement v03_access.log.51,52,etc.. mais pas le v03_access.log.5,4,3

Actuellement je fait fichier par fichier et de plus cela me supprime également les fichiers v03_access.log.5 et v03_access.log.4,etc..

find /  -name  'v03_access.log.4*' -exec rm -f {} \;
find / -name 'v03_access.log.3*' -exec rm -f {} \;
find / -name 'v03_access.log.5*' -exec rm -f {} \;


Est ce possible de faire cela en une seule commande?

Merci

2 réponses

jee pee Messages postés 40225 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 19 septembre 2024 9 333
Modifié le 3 août 2021 à 11:06
Bonjour,

A essayer, le OR
find / \( -name 'v03_access.log.3*' -o -name 'v03_access.log.4*' -o -name 'v03_access.log.5*' \)


ou un regex
find / -iregex "\(v03_access.log.3*\|v03_access.log.4*\|v03_access.log.5*\)" 


Et sur le OR, pour ne pas prendre 3,4, et 5 seuls, utiliser 2 caractères joker ? (1 seul caractère) et * (0 à n caractères),
'v03_access.log.3?*' le ? oblige à avoir un autre caractère derrière le 3, le * permettant n'importe quelle longueur


1
pcsystemd Messages postés 700 Date d'inscription dimanche 27 novembre 2005 Statut Membre Dernière intervention 29 juillet 2024 23
3 août 2021 à 16:00
Merci.

Avec le OR cela fonctionne mais pas avec la Regex mais c'est peut être dû à la version de l'OS qui est ancienne.
0