macOS 上的某些文件夹具有存储在名为
Icon?
的文件中的自定义图标,其中 ?
实际上是 CR
字符,并且仅打印为“?”大多数情况下(在终端和 Finder 中)。
但是当在终端中以十六进制打印这样的文件名时,你会得到:
$ ls -l1 Icon* | xxd
00000000: 4963 6f6e 0d0a Icon..
0d
是名称末尾的CR
,0a
是每行末尾的ls
打印的LF。
现在,我喜欢使用
find
来查找此类文件。
我认为这就是方法:
find -E . -iregex ".*/Icon\x0d"
也不:
find -E . -iregex ".*/Icon\r"
但是,这不会找到它。但这找到了它(使用
.
作为通配符):
find -E . -iregex ".*/Icon."
但是一般来说寻找十六进制字符是有问题的,因为这也不起作用:
find -E . -iregex ".*/\x49con."
\x49
是 I
的代码,所以这应该可行。
因此,如果您想自己尝试一下,请获取 any 文件并尝试使用带有 -regex 选项的
find
命令来查找它,并指定至少一个十六进制字符,例如使用正则表达式 \x61
或任何正确的内容查找名为“a”的文件。你能完成吗?
我认为正则表达式引擎不会解析十六进制转义序列。尝试在正则表达式中放入文字 CR 字符,使用
$'...'
find . -name $'Icon\r'