Я отправил вывод команды ls в файл. Содержимое выглядит следующим образом:
[Chihiro]_Grisaia_no_Kajitsu_-_01_[1920x816_Blu-ray_FLAC][D2B961D6].mkv
[Chihiro]_Grisaia_no_Kajitsu_-_02_[1920x816_Blu-ray_FLAC][38F88A81].mkv
[Chihiro]_Grisaia_no_Kajitsu_-_03_[1920x816_Blu-ray_FLAC][410F74F7].mkv
Моя попытка переименовать эти эпизоды в соответствии с их номерами выглядит следующим образом:
cat grisaia | while read line;
#get the episode number
do EP=$(echo $line | egrep -o "_([0-9]{2})_" | cut -d "_" -f2)
if [[ $EP ]]
#escape special characters
then line=$(echo $line | sed 's/\[/\\[/g' | sed 's/\]/\\]/g')
mv "$line" "Grisaia_no_Kajitsu_${EP}.mkv"
fi
done
Команды mv завершаются с кодом 1 со следующей ошибкой:
mv: не удалось стат '\ [Тихиро \] _ Grisaia_no_Kajitsu_- 01 \ [1920x816_Blu-ray_FLAC \] \ [D2B961D6 \]. mkv': нет такого файла или каталога
Чего я действительно не понимаю, так это того, что если я скопирую файл, который не может быть статистическим, и попытаюсь выполнить его стат, он сработает. Я даже могу взять ту же самую строку, которая выводится, и индивидуально выполнить команду mv.