Я пишу bash-скрипт для переименования большого количества файлов, используя mv. Оригинальное имя файла

File001.txt

Новое имя файла

Файл-Новый-001.doc

Я могу изменить суффикс, но я не знаю, как вставить часть "-new-".

Спасибо за вашу помощь

2 ответа2

0

Если использование 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
0

Я смог исправить это с помощью 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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .