在 Linux 上,我有一个包含大量文件的目录。其中一些具有非 ASCII 字符,但它们都是有效的 UTF-8。一个程序有一个错误,阻止它使用非 ASCII 文件名,我必须找出有多少受到影响。我打算这样做find,然后执行grep打印非 ASCII 字符,然后执行 awc -l来查找数字。它不必是 grep;我可以使用任何标准的 Unix正则表达式,例如Perl、sed、AWK等。
find
wc -l
但是,是否有“任何不是 ASCII 字符的字符”的正则表达式?
这将匹配单个非 ASCII 字符:
[^\x00-\x7F]
这是一个有效的PCRE( Perl 兼容的正则表达式 )。
您还可以使用POSIX速记:
[[:ascii:]]
[^[:ascii:]]
[^[:print:]]对你来说可能就足够了。**
[^[:print:]]