У меня есть машина, содержащая большое количество файлов, которые изначально были созданы на Mac с каким-то специальным символом в имени (не уверен, что именно). Когда я выполняю команду ls в терминале bash, эти файлы отображаются примерно так:
$ 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. -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
думает, что файл существует (поскольку он указан в индексном дескрипторе каталога), но не сможет stat
чтобы получить разрешения, размер, право собственности и т. д., потому что inode фактически отсутствует.
У меня такое случалось раньше, но в моем случае LVM использовался коммерческой кластерной файловой системой (IBRIX), поэтому решение, которое я использовал, было несколько специфичным для этого продукта. У Novell есть страница, описывающая, как вы можете исправить проблемы LVM Вот это может быть полезно. В CentOS есть еще один Вот.
Однако, если это обычный старый раздел с некластеризованной файловой системой (например, ext3 на / dev / sda5 или что-то еще), тогда простой fsck
может быть все, что вам нужно сделать.
Обязательно проверьте свои журналы и вывод из dmesg
. Если вы действительно потеряли физический или логический том, вы должны увидеть ошибки LVM или соответствующих аппаратных устройств. Это даст вам некоторое представление о том, что на самом деле произошло, что вам нужно знать, чтобы это исправить.