【发布时间】:2017-02-20 07:20:19
【问题描述】:
我在 ubuntu 14.04 linux 机器上的文件在目录中包含无效的 windows 字符,例如 ?:"|* 等。我希望删除这些无效的 windows 字符,以便可以从 windows 机器上查看它们也是。
例如:以下是目录中的几个文件:
file "1".html
file "asdf".txt
重命名后的预期输出应该是:(本质上,它用单个下划线重命名无效字符)
file _1_.html
file _asdf_.txt
我一直在运行来自Find files with illegal windows characters in the name on Linux 的命令(稍作修改):
find . -name "*[<>\\|?:\"*]*" -exec bash -c 'x="{}"; y=$(sed "s/[<>\\|?:\"*]\+/_/g" <<< "$x") && echo "renaming" "$x" "-->" "$y" && mv "$x" "$y" ' \;
但是,上面的 bash 命令对包含双引号的文件失败。它适用于其他无效字符。
你能帮忙修复这个脚本吗?提前致谢。
【问题讨论】:
-
有一个名为
rename的实用程序(不幸的是,实际上是两个)应该可以轻松完成任务。 -
我希望修改这个脚本。我不介意使用重命名,除非这个脚本无法工作。不过,感谢您提及重命名。