Вы можете использовать команду rename
пакета util-linux следующим образом:
while read -r source target; do
rename "$source" "$target" $files
done < $mapping_file
Где $files
- это глобус или список файлов, описывающих файлы, которые вы хотите переименовать (./*.pdf
если все файлы находятся в текущем каталоге) и $mapping_file
ваш файл со списком замен.
Команда read
будет разбирать каждую строку на две переменные, которые мы назвали source
, иtarget
.Мы используем while read ...; do ...; done < file
для синтаксического анализа каждой строки файла и используем эти переменные в теле цикла в качестве параметров утилиты rename
, которая ищет строку в имени файла и заменяет ее другой.
Если у вас есть утилита perl rename
вместо утилиты util-linux (узнайте ваш man rename
, чтобы узнать), вы можете использовать следующее:
while read -r source target; do
rename "s/$source/$target/" $files
done < $mapping_file
Здесь образец запускается на ideone, который использует переименование perl
.