Удаление поврежденного файла в Linux

Как я могу удалить этот файл? Я думаю, что это поврежденный файл в файловой системе vfat.

?????????  ? ?       ?        ?            ? 100.jpg
4
задан 3498DB
04.04.2023 2:56 Количество просмотров материала 3237
Распечатать страницу

6 ответов

можно узнать inode номер файла, который вы можете сделать, запустив ls -i. Это возвращает две колонки-первая инода и вторым именем. Затем вы можете использовать find команда, чтобы выбрать только файл с этим конкретным inode, и удалить его.

sh-4.1$ ls -i .
  17921 somefile.ods
    169 someotherfile.conf
    305 -????????? ? ? ? ? ? 100.jpg
  18048 yetanotherfile.jpg

sh-4.1$ find . -maxdepth 1 -inum 305 -ok rm '{}' \;
< rm ... -????????? ? ? ? ? ? 100.jpg > ? y

так как inode, скорее всего, уникален для файла (при условии отсутствия жестких ссылок), это позволит вам удалить без рисков, присущих подстановочным знакам. The maxdepth а то ok параметры команды find просто делают еще менее вероятным, что вы случайно попадете в неправильный файл.

4
отвечен goldPseudo 2023-04-05 10:44

Я бы рекомендовал немного более оборонительную версию предложения ЧАО:

rm -i ./*100.jpg*

на -i делает rm попросите вас удалить каждый файл, который соответствует подстановочному знаку; это гарантирует, что вы случайно не удалите и другие файлы. И ведущий ./ гарантирует, что все имена будут рассматриваться как имена и не дальнейшие опции rm (похоже, что у вас может быть ведущий тире, поэтому это важный.)

возможно, кстати, что есть невидимые символы внутри строка "100.формат JPG." Если выше дает вам сообщение об ошибке, как"rm: ./*100.jpg*: not found", вот почему. ls -1fw | cat -v может быть полезным.

3
отвечен zwol 2023-04-05 13:01

Я не уверен, что какой-либо из ответов здесь действительно сообщил о проблеме Стиг. Я сам столкнулся с этой проблемой на своей файловой системе ext4:

# ls -l /tmp/dependencies/
ls: cannot access /tmp/dependencies/easy-rsa-master: No such file or directory
total 0
?????????? ? ? ? ?            ? easy-rsa-master

# ls -i /tmp/dependencies/
ls: cannot access /tmp/dependencies/easy-rsa-master: No such file or directory
? easy-rsa-master

# rm -r /tmp/dependencies
rm: descend into directory ‘dependencies’? y
rm: cannot remove ‘/tmp/dependencies/easy-rsa-master’: No such file or directory
rm: remove directory ‘dependencies’? y
rm: cannot remove ‘dependencies’: Directory not empty

сам файл поврежден вместе с его атрибутами. ls-i явно не показывает идентификатор inode. Никакое использование rm не сделает трюк. Даже rm-rf проходит в каталог и пытается удалить файл непосредственно (и тихо).

мое решение было воссоздать каталога без этого файла. Тогда вы можете переместить папку в другое место, например, /tmp. Она исчезнет после перезагрузки или когда ваш дистрибутив очищает каталог /tmp (надеюсь).

3
отвечен garlicman 2023-04-05 15:18

вы можете попробовать

rm *100.jpg*

в ?'s являются буквальные знаки вопроса или символы, которые не имеют смысла. В любом случае, сама ОС (и оболочка) обычно может удалить файл, если файловая система не замазана.

Если файловая система is испортил, хотя, удаление материала может сделать его хуже. Я бы рекомендовал загрузиться в Windows, чтобы просканировать диск, и удалить файл, если вы можете.

0
отвечен cHao 2023-04-05 17:35

вы можете попробовать это:

  1. переименовать каталог.
  2. пересоздать исходный каталог (пустой).
  3. копировать другие файлы к нему.
  4. удалить каталог, содержащий этот файл.
0
отвечен RichN 2023-04-05 19:52

Если вы хотите удалить все поврежденные файлы, вы можете сделать это:

ls -1 | grep -P "[\x80-\xFF]" | xargs rm

выше grep команда grep файлы, которые имеет не ASCII символов.

0
отвечен Sanghyun Lee 2023-04-05 22:09

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх