重新命名 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 現在被視為檔案名稱的一部分,即嘗試存取錯誤的檔案名稱(不存在)。

相關內容