今天发生了一些奇怪的事情。
我使用 putty 连接到 HP 服务器,并看到两个具有完全相同名称的文件:
-rw-r--r-- 1 hemantj 3368 4月1日12:47测试
-rw-r--r-- 1 hemantj 9月1日20日12:47测试
这很奇怪,因为你不能拥有同名的文件。
后来当我连接FileZilla时,我发现
第二个文件名的末尾有一些特殊字符。
我的问题:是否可以在终端中突出显示文件名中的特殊字符?
我已连接到 HP-UX,我的 shell 是 tcsh 和 ksh。
编辑:
答案1
事实上,您使用的是 HP-UX,这才是真正的问题所在。大多数 Linux 发行版上都提供 GNU 工具,有多种选择。
有ls -q
,它将特殊字符显示为“?”。或者-b
显示八进制代码。
另一种选择是ls | cat -v
。
另外find . -type f -ls
,默认情况下使用转义码显示。
其中一些可能适用于 HP-UX,但我不知道。
答案2
我用这个:
ls -l | less
答案3
如果你有幸拥有od,
ls -1 | od -xC
ls -1
打印文件名,以换行符分隔。od -xC
以十六进制打印输入文本,并在每个八位字节下显示可识别的 ascii 字符。
名为 1、2、3 的三个文件的示例输出:
0000000 310a 320a 330a
1 \n 2 \n 3 \n
0000006
名为 1 和 '\n2' 的两个文件的示例输出:
0000000 0a32 0a31 0a00
\n 2 \n 1 \n
0000005
请注意,两个文件有 3 个换行符,按字典顺序,“\n2”排在“1”之前。
答案4
这不是真正的突出显示,但它可能有助于识别字符:
# find . -type f -exec sh -c "hexdump -C <<<'{}'" \;
它可能会建造得更好。教我 ;)