Shell 使用“查找”查找名称中包含不可打印字符的文件

Shell 使用“查找”查找名称中包含不可打印字符的文件,shell,find,Shell,Find,在一个文件夹中,有许多文件的文件名包含不可打印的特殊字符,如“\201”。如果我直接输入它。我找不到他们。我怎样才能找到它们 这些文件显示在bash中 该文件显示在emacs中。 对于“\220Senno.flac”示例,您需要引用\: find . -iname '\\220*' -iname采用shell模式,而不是文本字符串,因此\需要转义。是的,至少使用GNUfind,您可以搜索包含不可打印字符的名称 不可打印字符集取决于您的区域设置。如果指定使用C语言环境,则不可打印的字符是ASC

在一个文件夹中,有许多文件的文件名包含不可打印的特殊字符,如“\201”。如果我直接输入它。我找不到他们。我怎样才能找到它们

这些文件显示在bash中

该文件显示在emacs中。

对于“\220Senno.flac”示例,您需要引用
\

find . -iname '\\220*'

-iname
采用shell模式,而不是文本字符串,因此
\
需要转义。

是的,至少使用GNU
find
,您可以搜索包含不可打印字符的名称

不可打印字符集取决于您的区域设置。如果指定使用C语言环境,则不可打印的字符是ASCII代码<32或ASCII代码>=127的字符

LC_ALL=C find -name '*[^[:print:]]*'

此处
[^[:print:]
表示任何不可打印的字符。

此处“不可打印且特殊”的含义不清楚。你有什么问题?你只是没有正确地引用
\201
不是一个特别棘手的文件名(如果你是这个意思的话,
ȁ
也是\u0201)。当你说“找到”时,你是如何找到它们的?@RobNapier感谢你的快速回复。例如,一个文件名为“\220Senno.flac”。如果我使用命令“find.-iname'\220'”。我找不到它。我想知道使用find函数显示这个文件的命令是什么。我对它进行了测试。它不起作用,那么这可能不是您的实际文件名。你为什么相信这是文件名?它真的是“反斜杠二零大写…”?或者是别的什么?我用图更新了我的问题。文件名包含\2201,但不是文件名的一部分。这是后面八进制代码的一部分\220是ASCII码144(A4h)。我怀疑这可能是UTF-8,即它绑定到下一个字符(S=53h)。UTF-8代码A453对应于图示符。这可能是预期的字符@yuxuan吗?哦,这不是一个有效的utf-8序列。这可能更像是UTF-16,而A453则是厤 整个文件名
\220Senno
将转换为厤湥潮. 宇轩,这对你有意义吗?