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)
-delete
ni-exec rm
travaillé pour moi dans Bash sur Windows. Mais cela a fait:find /path/to/directory -type f -name '*[0-9]x[0-9]*[0-9]x[0-9]*.jpg' | xargs rm
-print0
etxargs -0
sinon la commande échouera avec des noms de fichiers contenant des espaces ou des guillemets simples. Mais-delete
et-exec rm
faire le travail sur Windows. Si quelque chose ne fonctionne pas, ce n'est pas dû à leur utilisation.find
, assurez-vous donc que les utilitaires Unix sont les premiersPATH
.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'
la source