Я пытаюсь переименовать все файлы в подкаталогах в моей папке. Структура файла выглядит следующим образом:Переименование файлов в подкаталогах с использованием сценария bash в linux
PQR/
aaa.txt
bbb.jpg
ccc.jif
XYZ/
aaa.txt
bbb.jpg
ccc.jif
LMN/
aaa.txt
bbb.jpg
ccc.jif
Что я хочу:
PQR/
PQR_aaa.txt
PQR_bbb.jpg
PQR_ccc.jif
XYZ/
XYZ_aaa.txt
XYZ_bbb.jpg
XYZ_ccc.jif
LMN/
LMN_aaa.txt
LMN_bbb.jpg
LMN_ccc.jif
Я пытаюсь использовать следующий Баш скрипт, но его дает мне все виды ошибок (я относительно новым обстреливать сценарии так что медведь со мной).
#!/bin/bash/
for dirname in */
do
cd $dirname
dirnew=${dirname/\///} #To escape the forward slash
for file in *.* #Reading the files in the directory
do
mv "$file" "$dirnew"_"$file"
done
cd ..
done
Чтобы проверить скрипт для общих проблем, которые вы можете использовать http://www.shellcheck.net/# и http://explainshell.com/ – RedX
Спасибо! сделал это и внес изменения, если это необходимо. Тем не менее, я получаю ошибку «Bad substitution». Не удалось ли здесь избежать косой черты? –
Я повторил переменную «dirnew», и она не показывает мне замену косой черты. –