Dans votre cas particulier, vous pouvez utiliser la bash
commande suivante ( bash
est le shell par défaut sur macOS):
for f in *.png; do echo mv "$f" "${f/_*_/_}"; done
Remarque: s'il est possible que vos noms de fichiers commencent par -
, placez-les --
avant [1]:
mv -- "$f" "${f/_*_/_}"
Remarque: echo
est précédé de mv
pour effectuer un essai à sec. Supprimez-le pour effectuer un changement de nom réel.
Vous pouvez l'exécuter à partir de la ligne de commande ou l'utiliser dans un script.
"${f/_*_/_}"
est une application d' bash
expansion des paramètres : le (premier) modèle de correspondance de sous-chaîne _*_
est remplacé par un littéral _
, coupant efficacement le jeton du milieu du nom.
- Notez qu'il
_*_
s'agit d'un modèle (une expression générique, comme également utilisée pour le globbing), pas une expression régulière (pour en savoir plus sur les modèles, exécuter man bash
et rechercher Pattern Matching
).
Si vous vous retrouvez fréquemment à renommer des fichiers par lots, envisagez d'installer un outil spécialisé tel que l' rename
utilitaire basé sur Perl . Sur macOS, vous pouvez l'installer à l'aide du gestionnaire de packages populaire Homebrew comme suit:
brew install rename
Voici l'équivalent de la commande en haut utilisant rename
:
rename -n -e 's/_.*_/_/' *.png
Encore une fois, cette commande effectue un essai à vide; remove -n
pour effectuer un changement de nom réel.
- Similaire à la
bash
solution, s/.../.../
effectue une substitution de texte, mais - contrairement à dans bash
- des expressions régulières vraies sont utilisées.
[1] Le but de l'argument spécial --
, qui est pris en charge par la plupart des utilitaires, est de signaler que les arguments suivants doivent être traités comme des opérandes (valeurs), même s'ils ressemblent à des options en commençant par -
, comme le note Jacob C ..
_*_
par un espace.