重命名 bash 脚本 - false 没有此类文件或目录错误

重命名 bash 脚本 - false 没有此类文件或目录错误

我正在尝试根据同一目录中的另一个文件重命名数百个文件。我找到了一个脚本,经过修改后,我有以下内容:

while read file; do echo mv "\"${file%/*}/Trailer.mov\"" "\"${file%.*}-Trailer.mov\""; done < <(find . -type f ! -name "Trailer.mov" -name "*.mkv")

它输出 mv 命令,如下所示:

mv "./dir1/Trailer.mov" "./dir1/filename-Trailer.mov"

当我手动运行它时,mv 命令确实正确地重命名了文件(如果存在)。当我在没有 echo 的情况下运行脚本时,它会给出如下错误:

mv: cannot stat ‘"./dir1/Trailer.mov"’: No such file or directory

无论文件是否存在,每个项目都会发生此错误。为什么会出现这种情况呢?我以 root 身份运行。

答案1

您必须删除内部引号或使用eval.

问题是"s 现在被视为文件名的一部分,即尝试访问错误的文件名(不存在)。

相关内容