我有一个文件系统,其中包含大量我想在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执行的三个命令。是否有可能创建一个命令,以这种方式删除双引号和单引号?