удалить файл с поврежденным именем

325
mob

Так и случилось:

$ ls ''$'\342\200''abc2.16.5' $ ls | od -c 0000000 342 200 a b c 2 . 1 6 . 5 \n $ ls -il 76236897 -rw-rw-r-- 1 mob users 0 Aug 16 17:52 ''$'\342\200''abc2.16.5' 

Как мне удалить этот файл? Вот некоторые вещи, которые не сработали:

$ rm -i -- * rm: remove regular file ''$'\342\200''abc2.16.5'? y rm: cannot remove ''$'\342\200''abc2.16.5': No such file or directory  $ rm ./* rm: cannot remove './'$'\342\200''abc2.16.5': No such file or directory  $ rm ./<TAB> # for file name completion rm: cannot remove './'$'\342\200''abc2.16.5': No such file or directory  $ find . -delete find: cannot delete './\342\200abc2.16.5': No such file or directory  $ perl -e 'unlink(glob("*")) or die $!' $ perl -e 'unlink(glob("*2.16.5")) or die $!' No such file or directory at -e line 1.  $ find . -inum 76236897 -delete find: cannot delete './\342\200abc2.16.5': No such file or directory  $ rename * xxx ; rm -v xxx rm: cannot remove 'xxx': No such file or directory 

Любопытно, truncate * --size 0работает, cat *работает, shred *работает

Что я должен попробовать дальше? Система Red Hat Enterprise Linux Server, версия 6.8

1
Является ли удаление каталога, содержащего файл, опцией? confetti 6 лет назад 0
Нет, если кто-то не знает, как удалить непустую директорию mob 6 лет назад 0
`rm -rf` должен сделать это для вас. confetti 6 лет назад 0
`rm -rf` сначала очищает каталог, а затем удаляет его. К сожалению, тоже не работает. mob 6 лет назад 0
Я думаю, что у вас есть повреждение файловой системы. Можете ли вы загрузиться в режиме только для чтения и запустить `fsck` на разделе с файлом, который нельзя восстановить? Deltik 6 лет назад 2
Что это за файловая система? Это здорово? Kamil Maciorowski 6 лет назад 0
Это может не сработать, так как я ожидаю, что завершение табуляции позаботится об этом, но вы пытались экранировать все специальные символы? `rm \ '\' \ $ \\ 342 \\ 200 \ '\' abc2.16.5 \ '` Omnipresence 6 лет назад 0

2 ответа на вопрос

1
confetti

Поскольку вы говорите, shredработает, я хотел бы предложить добавить -uаргумент в клочок.

Со страницы руководства ( man shred):

-u освободить и удалить файл после перезаписи

Поэтому я бы попробовал shred -n 0 -u *в каталоге, содержащем файл.

:-( `shred: '' $ '\ 342 \ 200''abc2.16.5': не удалось удалить: нет такого файла или каталога`. Хотя я ценю усилия. mob 6 лет назад 0
Можете ли вы добавить вывод `ls -l` в ОП? Любопытно, как выглядят права доступа к файлу. confetti 6 лет назад 0
0
JonathanDavidArndt

Это случалось со мной довольно часто на протяжении многих лет. Для меня это обычно происходит в разделе Windows NTFS; Вы используете RHEL, но, возможно, тот же процесс поможет вам.

Мне никогда не удавалось успешно удалить поврежденный файл или родительский каталог.

Я всегда должен был:

  • Резервное копирование всех файлов (за исключением каталога с поврежденным файлом)
  • Форматировать раздел
  • Восстановить все файлы

Если форматирование раздела невозможно, а поврежденный файл не вызывает каких-либо проблем, вы также можете попробовать следующее:

  • Поместите поврежденный файл в его собственную директорию
    • скопировать поврежденный файл в новый каталог
    • скопируйте все другие хорошие файлы в новый каталог
  • Переместите каталог с поврежденным файлом в $TEMPдругое место, где его можно безопасно проигнорировать.
  • Положите все остальные хорошие файлы туда, где они были

Похожие вопросы