我有一台机器,其中包含大量的文件,这些文件最初是在某个特殊字符的名称(不知道是什么)的Mac上创build的。 当我在bashterminal上做一个ls时,这些文件显示如下:
$ ls -al ls: cannot access ._BLM?OAS: No such file or directory ls: cannot access BLM?OAS: No such file or directory total 20476 drwx------+ 43 Integr None 0 Sep 7 09:19 . drwx------+ 16 Integr None 0 Sep 7 09:19 .. -rwx------+ 1 Integr None 24580 Jul 6 14:27 .DS_Store ??????????? ? ? ? ? ? ._BLM?OAS drwx------+ 2 Integr None 0 Sep 7 09:19 66-North . . .
特别注意ls和文件后面的错误全部是? 在它的名字。 现在我知道我可以安全地删除._文件,除了当我试图做到这一点不起作用:
$ rm ._* rm: cannot remove `._BLM?OAS': No such file or directory
那么如何删除这些文件呢? 实际上有几百个,所以一个一个不行。 我知道我可以添加-delete标志find删除所有find的文件,但做一个“查找”。 -name“._ *”-delete“导致相同的错误(仅重复数百次)。 谢谢。
您可以通过将其包含在单引号中来删除该文件:
wmoore@bitbucket(/tmp)$ touch '._BLM?OAS' wmoore@bitbucket(/tmp)$ ls -l ._BLM?OAS -rw-r--r-- 1 wmoore users 0 Sep 7 14:04 ._BLM?OAS wmoore@bitbucket(/tmp)$ rm -f '._BLM?OAS' wmoore@bitbucket(/tmp)$ ls -l ._BLM?OAS /usr/bin/ls: ._BLM?OAS: No such file or directory
但是,由于文件状态包含一堆问号,这使我相信你有一个损坏的文件系统。 我推荐一个fsck ,它可以更正数据。
这些文件在LVM卷上吗? 如果是这样,则看起来您可能在卷组中丢失了一个或多个物理卷或逻辑卷。 这将导致ls -l显示所有这些问号,因为ls认为该文件存在(因为它在目录inode中列出),但它将无法stat它以获取权限,大小,所有权等,因为inode实际上并不存在。
我以前曾遇到过这种情况,但在我的情况下,LVM正在被商业集群文件系统(IBRIX)使用,所以我使用的解决scheme对于该产品有些特定。 Novell有一个页面描述如何从LVM问题中恢复,这可能会有所帮助。 CentOS 在这里还有一个。
但是,如果这只是一个非集群文件系统的常规旧分区(例如/ dev / sda5上的ext3或其他),那么可能只需要一个简单的fsck就可以了。
绝对检查你的日志和dmesg的输出。 如果确实丢失了物理或逻辑卷,则应该看到LVM或底层硬件设备的错误。 这会给你一些实际发生的迹象,你需要知道为了解决这个问题。