У меня есть папка с файлами, которые начинаются с определенных c строк, и я хотел бы заменить часть их строк, используя соответствующий столбец из текстового файла
Папка с файлами
ABC_S1_002.txt
ABC_S1_003.html
ABC_S1_007.png
NMC_D1_002.png
NMC_D2_003.html
И у меня есть текстовый файл, в котором строки должны быть заменены как:
ABC ABC_newfiles
NMC NMC_extra
Итак, папка после переименования будет
ABC_newfiles_S1_002.txt
ABC_newfiles_S1_003.html
ABC_newfiles_S1_007.png
NMC_extra_D1_002.png
NMC_extra_D2_003.html
Я пробовал файл за файлом, используя mv
for f in ABC*; do mv "$f" "${f/ABC/ABC_newfiles}"; done
Как я могу прочитать текстовый файл, в котором есть старые строки в первом столбце, и заменить их новыми строками из второго столбца? Я пробовал
IFS=$'\n'; for i in $(cat file_rename);do oldName=$(echo $i | cut -d $'\t' -f1); newName=$(echo $i | cut -d $'\t' -f2); for f in oldName*; do mv "$f" "${f/oldName/newName}"; done ; done
Но не сработало.