Mort simple.
Comment puis-je renommer
05_h.png
06_h.png
à
05_half.png
06_half.png
Au moins, je pense que c'est simple, mais il est difficile de Google pour ce genre de chose à moins que vous ne le sachiez déjà.
Merci....
Il suffit d'utiliser bash, pas besoin d'appeler des commandes externes.
for file in *_h.png
do
mv "$file" "${file/_h.png/_half.png}"
done
Ne pas ajouter #!/bin/sh
Pour ceux qui ont besoin de cette ligne:
for file in *.png; do mv "$file" "${file/_h.png/_half.png}"; done
Essayez la commande rename
:
rename 's/_h.png/_half.png/' *.png
Mettre à jour:
exemple d'utilisation:
créer du contenu
$ mkdir /tmp/foo
$ cd /tmp/foo
$ touch one_h.png two_h.png three_h.png
$ ls
one_h.png three_h.png two_h.png
solution de test:
$ rename 's/_h.png/_half.png/' *.png
$ ls
one_half.png three_half.png two_half.png
for f in *.png; do
fnew=`echo $f | sed 's/_h.png/_half.png/'`
mv $f $fnew
done
Vous cherchez une solution pure bash? Il y a beaucoup d'approches, mais en voici une.
for file in *_h.png ; do mv "$file" "${file%%_h.png}_half.png" ; done
Cela suppose que les seuls fichiers du répertoire en cours se terminant par _h.png
sont ceux que vous souhaitez renommer.
Beaucoup plus spécifiquement
for file in 0{5..6}_h.png ; do mv "$file" "${file/_h./_half.}" ; done
En supposant que ces deux exemples sont votre seul. des dossiers.
Pour le cas général, le fichier renommé dans aétéest couvertavant .
Utilisez l'utilitaire rename
écrit en Perl . Peut-être qu'il n'est pas disponible par défaut si ...
$ touch 0{5..6}_h.png
$ ls
05_h.png 06_h.png
$ rename 's/h/half/' *.png
$ ls
05_half.png 06_half.png
J'avais une question similaire: Dans le manuel, il est décrit renommer en
rename [option] expression replacement file
afin que vous puissiez l'utiliser de cette façon
rename _h _half *.png
Dans le code: '_ h 'est l'expression que vous recherchez. '_ half 'est le motif que vous voulez remplacer. '*. png' est la plage de fichiers que vous recherchez pour vos fichiers cibles possibles.
J'espère que cela peut aider c:
for i in *_h.png ; do
mv $i `echo "$i"|awk -F'.' '{print $1"alf."$2}'`
done
Une autre approche peut être manuelle en utilisant l'option de renommage par lots
Faites un clic droit sur le fichier -> Fichier Commandes personnalisées -> Renommer par lots .__ et vous pourrez remplacer h. à moitié.
Cela fonctionnera pour le gui basé sur Linux utilisant WinSCP, etc.
Bon mot:for file in *.php ; do mv "$file" "_$file" ; done
Utilisez l'utilitaire rename
:
rc@bvm3:/tmp/foo $ touch 05_h.png 06_h.png
rc@bvm3:/tmp/foo $ rename 's/_h/_half/' *
rc@bvm3:/tmp/foo $ ls -l
total 0
-rw-r--r-- 1 rc rc 0 2011-09-17 00:15 05_half.png
-rw-r--r-- 1 rc rc 0 2011-09-17 00:15 06_half.png