一尘不染

在Linux上的名称中查找带有非法Windows字符的文件

linux

我在Linux机器上有一个项目,其中包含带有在Windows中被认为是非法/保留的字符的文件(http://msdn.microsoft.com/zh-
cn/library/aa365247%28VS.85%29.aspx)。该项目在多个文件夹中有10,000多个文件,我将确定这些文件的路径。

我可以find . -name "*\?*"为每个非法/保留字符,但是有一种更简单的方法来查找包含以下内容的所有文件< > : " / \ | ? *

确定后,我想从每个文件中删除所有这些字符。


阅读 367

收藏
2020-06-03

共1个答案

一尘不染

这种单线查找应该为您工作:

find . -name "*[<>:\\|?*]*" -exec bash -c 'x="{}"; y="$(sed "s/[<>:\\|?*]\+/-/g" <<< "$x")" && mv "$x" "$y" ' \;
2020-06-03