查找文件名中包含非 ASCII 字符的文件

Ado*_*obe 0 find non-ascii-characters

有没有办法可以find处理包含非 ASCII 字符的文件?我当然可以使用管道 - 并使用 perl 过滤文件,但为了提高效率,我想将其全部设置为find. 我尝试了以下方法:

find . -type f -name '*[^[:ascii:]]*'
Run Code Online (Sandbox Code Playgroud)

它根本不起作用。

编辑

我现在正在尝试利用

find . -type f -regex '.*[^[:ascii:]].*'
Run Code Online (Sandbox Code Playgroud)

它是一个 emacs 正则表达式并且有[:ascii:]类。但我试图使用的表达方式不起作用。

编辑2

LC_COLLATE=C find . -type f -regex '.*[^!-~].*'
Run Code Online (Sandbox Code Playgroud)

匹配带有非 ASCII 字符的文件(一个完整的巫术......)。但也匹配名称中带有空格的文件。

小智 6

这似乎在默认模式和 posix 扩展模式下都对我有用:

LC_COLLATE=C find . -regex '.*[^ -~].*'
Run Code Online (Sandbox Code Playgroud)

不过,可能存在与语言环境相关的问题,而且我没有大量的非 ASCII 文件名语料库来测试它,但它捕获了我拥有的文件名。