我已将 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: 无法统计 '\[Chihiro\]_Grisaia_no_Kajitsu_- 01 \[1920x816_Blu-ray_FLAC\]\[D2B961D6\].mkv': 没有这样的文件或目录
我真正不明白的是,如果我复制无法统计的文件并尝试统计该文件,它就可以工作。我什至可以采用与输出完全相同的字符串并单独执行 mv 命令。