bash スクリプトの名前を変更 - そのようなファイルまたはディレクトリはありませんというエラー

bash スクリプトの名前を変更 - そのようなファイルまたはディレクトリはありませんというエラー

同じディレクトリ内の別のファイルに基づいて、数百のファイルの名前を変更しようとしています。スクリプトを見つけて、修正を加えると次のようになります。

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

問題は、"がファイル名の一部とみなされるようになったことです。つまり、間違ったファイル名 (存在しない) にアクセスしようとします。

関連情報