web-dev-qa-db-fra.com

supprimer les fichiers correspondant au modèle

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)

33
mikkelbreum

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'

0
MasterR