在终端中识别名称中含有特殊字符的文件

在终端中识别名称中含有特殊字符的文件

今天发生了一些奇怪的事情。
我使用 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——我从你们的回复中学到了很多东西

答案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 <<<'{}'" \;

它可能会建造得更好。教我 ;)

相关内容