J'ai besoin de supprimer récursivement tous les fichiers dans tous les sous-répertoires où le nom de fichier contient un nombre suivi d'un "x" suivi d'un nombre, au moins deux fois.
Exemple:
Je voudrais supprimer ces fichiers:
'aaa-12x123-123x12.jpg'
'aaa-12x12-123x12-12x123.jpg'
Mais je ne veux PAS supprimer ces fichiers:
'aaa.jpg'
'aaa-12x12.jpg'
'aaaxaaa-123x123.jpg'
'aaaxaaa-aaaxaaa.jpg'
Comment puis-je faire cela (à partir du shell bash)
Une chaîne contient "un nombre suivi d'un x
suivi d'un nombre" si et seulement si elle contient un chiffre suivi d'un x
suivi d'un chiffre, c'est-à-dire si elle contient une sous-chaîne correspondant au modèle [0-9]x[0-9]
. Vous cherchez donc à supprimer les fichiers dont le nom correspond au modèle *[0-9]x[0-9]*[0-9]x[0-9]*.jpg
.
find /path/to/directory -type f -name '*[0-9]x[0-9]*[0-9]x[0-9]*.jpg' -delete
Si votre find
n'a pas -delete
, appelez rm
pour supprimer les fichiers.
find /path/to/directory -type f -name '*[0-9]x[0-9]*[0-9]x[0-9]*.jpg' -exec rm {} +
La bonne commande est:
find . -type f -iregex '.*[0-9]x[0-9]*\.jpg$'
cela ne récupérera que les fichiers avec des noms: 'aaa-12x12.jpg', mais pas 'aaa-12x12red.jpg'