“ls”显示目录中两个相同的文件

“ls”显示目录中两个相同的文件

因此,不知何故,该命令ls似乎向我显示了目录中的两个相同的文件。

$ ls -Blah /System/Library/LaunchDaemons
total 32                                                              
drwxr-xr-x  266 root  wheel   8.8K Jun 18 10:41 .
drwxr-xr-x   79 root  wheel   2.6K Mar 31 12:28 ..
[redacted]
-rw-r--r--    1 root  wheel   715B Jun 18 10:36 tftp.plist
-rw-r--r--    1 root  wheel   715B Jun 18 10:35 tftp.plist

我可以移动、重命名、编辑其中一个文件,但另一个文件似乎不存在。bash选项卡补全甚至显示相同的文件。

例如,输入以下内容,然后点击TAB

$ sudo mv /System/Library/LaunchDaemons/tftp
tftp.plist   tftp.plist

如果我重命名该文件:

$ sudo mv /System/Library/LaunchDaemons/tftp.plist /System/Library/LaunchDaemons/tftp.plist.derp

选项卡补全仍然显示该文件:

$ ls -Blah /System/Library/LaunchDaemons/tf
tftp.plist       tftp.plist.derp 

但原始的、未修改的文件似乎没有“ls”

$ ls -Blah /System/Library/LaunchDaemons/tftp.plist
ls: /System/Library/LaunchDaemons/tftp.plist: No such file or directory

但是,如果我只列出上面第一个代码片段中的文件,请看:

$ ls -Blah /System/Library/LaunchDaemons
total 32                                                              
drwxr-xr-x  266 root  wheel   8.8K Jun 18 10:41 .
drwxr-xr-x   79 root  wheel   2.6K Mar 31 12:28 ..
[redacted]
-rw-r--r--    1 root  wheel   715B Jun 18 10:35 tftp.plist
-rw-r--r--    1 root  wheel   715B Jun 18 10:36 tftp.plist.derp

知道这里发生了什么以及如何摆脱这个幽灵文件吗?

如果这为问题添加了任何信息,那么这是一台运行 OS X 的 Mac。sed就在疯狂开始之前我正在使用这个文件。

编辑

我使用了blahBlah ls标志,表观输出没有变化。

编辑2

评论中要求的附加信息:

$ echo tftp* | xxd
0000000: 7466 7470 2e70 6c69 7374 2020 7466 7470  tftp.plist  tftp
0000010: 2e70 6c69 7374 2e64 6572 700a            .plist.derp.

更多的:

$ printf '<%q>\n' tftp*
<tftp.plist\ >
<tftp.plist.derp>

更:

$ locale                                                                                                                      │-rw-r--r--    1 root  wheel   495B Sep  9  2014 org.net-snmp.snmpd.plist
LANG="en_US.UTF-8"                                                                                                            │-rw-r--r--    1 root  wheel   498B Jan 15 23:15 org.ntp.ntpd.plist
LC_COLLATE="en_US.UTF-8"                                                                                                      │-rw-r--r--    1 root  wheel   1.0K Nov 13  2014 org.openldap.slapd.plist
LC_CTYPE="en_US.UTF-8"                                                                                                        │-rw-r--r--    1 root  wheel   572B Sep  9  2014 org.postfix.master.plist
LC_MESSAGES="en_US.UTF-8"                                                                                                     │-rw-r--r--    1 root  wheel   238B Sep  9  2014 shell.plist
LC_MONETARY="en_US.UTF-8"                                                                                                     │-rw-r--r--    1 root  wheel   941B Sep  9  2014 ssh.plist
LC_NUMERIC="en_US.UTF-8"                                                                                                      │-rw-r--r--    1 root  wheel   260B Sep  9  2014 telnet.plist
LC_TIME="en_US.UTF-8"                                                                                                         │-rw-r--r--    1 root  wheel   715B Jun 18 10:36 tftp.plist
LC_ALL="en_US.UTF-8"

笔记

下面的答案帮助我看到名称中有一个尾随空格。

答案1

您要么有尾随空格,要么文件系统损坏。

尝试

for i in tftp.plist*
do
    echo "'$i'"
done

那应该输出类似的东西

'tftp.plist'
'tftp.plist '

请注意引号和额外的空格。如果它两次输出完全相同的内容,则您的文件系统可能已损坏。

尝试

ls -i tftp.plist*

这将为您提供文件的索引节点号。如果它们相同,则您的目录中有两次相同的文件。那真是太糟糕了,你应该尽快运行 fsck。但我怀疑这就是问题所在;更有可能是空白的事情。

相关内容