Não tentei, mas deve funcionar
$ rename 's/1/5/' 1.*
$ rename 's/2/6/' 2.*
Vamos supor que eu tenha seis arquivos nomeados:
1.a, 1.b, 1.c
2.a, 2.b, 2.c
onde a, b, c são extensões de arquivo como sh, txt, etc.
Agora, desejo renomear os arquivos 1.a, 1.b, 1.c
com 5.a, 5.b, 5.c
e 2.a, 2.b, 2.c
com 6.a, 6.b and 6.c
. Aqui, tanto 2
quanto 6
são entradas fornecidas pelo usuário.
Não tentei, mas deve funcionar
$ rename 's/1/5/' 1.*
$ rename 's/2/6/' 2.*
Aqui está uma função bash que fará o truque:
do_rename() {
oldnum=$1 # assign parameters for clarity
newnum=$2
for f in "$oldnum".*; do # get all files matching the old number
mv "$f" "$newnum"."${foo##*.}" # use a parameter expansion to get the exetension of the current filename
done
}
Um caminho:
#!/bin/bash
for num in 1 2
do
read -p "Enter new val for files starting with $num :" val
for i in ${num}*.[abc]
do
ext=${i##*.}
mv $i "$val.$ext"
done
done