Comment puis-je renommer un grand nombre de fichiers à l'aide d'une expression régulière?


20

Je veux renommer beaucoup de fichiers sur Mac OS X (10.7.2) .. Je n'ai pas le paquet perl pour la renamecommande.

Mes fichiers ont des noms comme "T452-102456-0.png" et je veux supprimer la partie "-0". Je sais que je peux faire cette action en écrivant mon propre script php-cli, mais je voudrais connaître une solution plus simple et plus rapide.


N'y a-t-il pas une contradiction logique entre «beaucoup de fichiers pdf» et «Mes fichiers ont des noms comme« T452-102456-0.png »»?
manatwork

Oh ... le type de fichiers n'a pas d'importance, mais c'est vrai ^^. Je retouche, merci pour ton commentaire =)
Raphaël

Réponses:


21

Bash ou Ksh avec mvpourrait le résoudre:

for f in *.png; do mv -n "$f" "${f/-0}"; done

Dans le cas où le nom du fichier peut avoir «0» après le premier tiret et que le «-0» est toujours devant le point, vous pouvez également inclure ce point dans l'expression:

for f in *.png; do mv -n "$f" "${f/-0./.}"; done

Mais comme cette règle de changement de nom est simple, si vous l'avez renamedans le paquet util-linux , cela le fera aussi:

rename '-0.' '.' *.png

cela fonctionne parfaitement. Merci beaucoup =)
Raphaël

3

Méthode simple: fichiers dans le répertoire actuel uniquement

Avec zsh:

autoload zmv
zmv '(*)-0(.png)' '$1$2'

Avec d'autres coquilles:

for x in *-0.png; do mv -- "$x" "${x%-0.*}.png"; done


Méthode améliorée: fichiers dans le répertoire et / ou les sous-répertoires actuels

Avec zsh:

zmv '(**/)(*)-0(.png)' '$1$2$3'

Avec ksh93:

set -o globstar
for x in **/*-0.png; do mv -- "$x" "${x%-0.*}.png"; done

Avec bash ≥4, comme ci-dessus, mais utilisez à la shopt -s globstarplace de la setcommande.

Avec d'autres coquilles:

find -name '*-0.png' -exec sh -c 'for x; do mv -- "$x" "${x%-0.*}.png"; done' _ {} +

une autre bonne raison d'installer zsh:) .... zmv
danidee


0

Si vous avez le mmvpackage:

mmv '*-0.png' '#1.png'

Comme (versions récentes de) rename, cela prendra un soin raisonnable pour éviter d'écraser les fichiers existants.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.