У меня есть несколько файлов в папке с именами в форме: SOMETEXT1 номер SOMETEXT2.mp3 или SOMETEXT номер.mp3. Я хочу переименовать их в номер SOMETEXT SOMETEXT2.mp3 или номер SOMETEXT.mp3. Используя bash и обычные инструменты командной строки GNU, как мне этого добиться?
1 ответ
1
Использование perl-rename
(иногда называется prename
):
prename -v 's/^(.+) (\d+)( .+|\.[^.]+)$/\2 \1\3/' *
Используйте -n
чтобы просто проверить без переименования.
То же самое с bash
:
re='^(.+) ([0-9]+)( .+|\.[^.]+)$'
for file in *; do
new=$file
if [[ "$file" =~ $re ]]; then
new="${BASH_REMATCH[2]} ${BASH_REMATCH[1]}${BASH_REMATCH[3]}"
fi
if [[ "$new" != "$file" ]]; then
mv -v "$file" "$new"
fi
done