我有一個文件系統,其中包含大量我想在Windows計算機上使用的文件。文件名中的非法字符是一個問題,所以我搜索了一個bash命令,遞歸地清理所有文件中的非法字符。用雙引號文件進行批量重命名
我發現這個解決方案(https://stackoverflow.com/a/19009177/7394134):
find . -name "*[<>:\\|?*]*" -exec bash -c 'x="{}"; y=$(sed "s/[<>:\\|?*]\+/-/g" <<< "$x") && mv "$x" "$y" ' \;
它的工作對大多數文件,但它不包含雙引號的文件工作和失敗,出現以下錯誤信息:
bash :(其餘的文件名後雙引號):命令未找到
我發現有點不同的問題lik e「刪除含雙引號的文件」或「用文件中的sed刪除雙引號」,但不幸的是我無法將他們的解決方案轉移到上述命令的成功修改上。
備註:即使可能有一行更簡單(我很想看到它們!),我想通過-exec將文件名傳遞給由bash執行的三個命令。是否有可能創建一個命令,以這種方式刪除雙引號和單引號?