Я пишу bash-скрипт для переименования большого количества файлов, используя mv. Оригинальное имя файла
File001.txt
Новое имя файла
Файл-Новый-001.doc
Я могу изменить суффикс, но я не знаю, как вставить часть "-new-".
Спасибо за вашу помощь
Я пишу bash-скрипт для переименования большого количества файлов, используя mv. Оригинальное имя файла
File001.txt
Новое имя файла
Файл-Новый-001.doc
Я могу изменить суффикс, но я не знаю, как вставить часть "-new-".
Спасибо за вашу помощь
Если использование mv
не является обязательным, используйте переименование:
rename 's/File(.*)\.txt/file-new-$1.doc/' *
Это переименовывает все файлы в текущем каталоге. Если у вас есть файлы в подкаталогах, используйте find
:
find -type f -exec rename 's/File(.*)\.txt/file-new-$1.doc/' {} +
Если mv
требуется, вы можете сделать это:
for i in *; do
j=$(echo $i | sed -r 's/File(.*)\.txt/file-new-\1.doc/')
mv $i $j
done
Я смог исправить это с помощью mv, используя следующий цикл:
#!/bin/bash
for file in *.txt;
do
mv "$file" "${file%.txt}.doc"
done
for file in file*.doc
do
mv -i "${file}" "${file/e/e-new-}"
done