9

当我通过一个unix系统时,我发现五个,两个同名的目录列在同一路径上,当我做了一个ls -Dl

这是视图,为什么我说五个,两个同名的目录......

//11/# ls -Dl

total 553

drwxrwxr-x  2 root      root          12288 Dec 20  2010 bin

drwxrwxr-x  2 root      root          16384 Sep 28  2010 bin

drwxrwxr-x 11 root      root           4096 Oct 25 06:49 etc

drwxrwxr-x 11 root      root           8192 May 17 07:40 etc

drwxrwxr-x  3 root      root           4096 Sep 28  2010 qnx4

drwxrwxr-x  4 root      root           4096 Jul 26  2010 qnx4

drwxrwxr--  4 root      root           4096 Sep 28  2010 registry

drwxrwxr-x  4 root      root           4096 Aug 31  2008 registry

drwxrwxr-x 16 root      root           4096 Sep 28  2010 usr

drwxrwxr-x 17 root      root           4096 May 27 03:49 usr

这怎么可能??如果我 cd 其中任何一个会发生什么,我最终会进入哪个目录?

还有另一种看待它的方式,当我这样做时ls -liF,这里列出的目录提出了不同的 inode。甚至不是符号链接或任何东西。???

请给我解释一下??

4

3 回答 3

9

您应该使用所有这些命令来检查文件名中的各种字符(包括隐藏字符):

printf "[%s]\n" *

printf "%s\n" * | cat -vte

printf "%s\n" * | od -bc

最后一个还将转储每个转储八进制和 ascii 中的每个字符。

于 2013-10-26T12:34:30.503 回答
4

使用ls -b,如果您在文件夹或文件后发现任何“\”,那应该是空格。

于 2013-10-26T12:31:09.283 回答
-1

在每一对中,一个目录名称可能包含一个不可打印的字符。尝试使用 mv 将它们都移动到唯一的文件名。一个您不应该完全命名的名称,然后您可以使用通配符指定它。

你应该可以通过输入文件名来重命名一个,所以你可以用“mv”临时重命名它。另一个,您可能想要摆脱的,将是您需要通过通配符指定的那个。试试看。

于 2013-10-26T08:13:06.043 回答