Вы можете сделать:
set --; src=014387650 OPTIND=1 tgt=
while getopts : na -"$src"
do tgt=$tgt$OPTARG
set "$@" "A[$#]=$tgt"
done; printf %s\\n "$@"
A[0]=0
A[1]=01
A[2]=014
A[3]=0143
A[4]=01438
A[5]=014387
A[6]=0143876
A[7]=01438765
A[8]=014387650
for num in {0..45}; do
mv "something-${num}.jpg" "th${num}-something.jpg"
done
Если число является переменным, вы можете сделать что-то вроде:
for num in $( seq 1 ${last-10} ); do
mv "something-${num}.jpg" "th${num}-something.jpg"
done
Если last
не задано, будет использоваться значение по умолчанию 10. Это означает, что вы можете включить его в сценарий :
last="${1-10}" # $1 is the first parameter given; use a default
# of 10 if not provided a value
for num in $( seq 1 $last ); do
mv "something-${num}.jpg" "th${num}-something.jpg"
done
С оболочкой zsh
:
autoload zmv # best in ~/.zshrc
zmv -n '(*)-(<->).jpg' 'th$1-$2.jpg'
(удалить -n
когда счастлив ).