Невозможно удалить файл - нет такого файла или каталога

Как я могу удалить файл, который есть, но система говорит, что его там нет?


11 ответов
Я знаю, что это старый, но у меня была та же проблема, что и у вас, только с папкой, а не с файлом. Ни один из предложенных здесь методов не сработал.
Мне удалось решить эту проблему, создав папку в том же положении и с тем же именем, которое я не мог удалить. Папка была создана правильно и "заменила" несуществующую. Затем я просто удалил новую папку, и проблема исчезла. Просто так.
У меня такая же проблема. Это была проблема в индексных записях раздела. Я решил это, запустив Windows, если у вас двойная загрузка, или вставьте live CD Windows XP или Windows 7, а затем выполните следующие действия:
- Поиск КОМАНДЫ ПОДСКАЗКА, что: есть
cmdщелкните правой кнопкой мыши -> Запуск от имени администратора. chkdsk /f/x D:(где D - ваша буква диска).- Нажмите Y, если он запрашивает Y/N
- Проверьте диск на наличие файла, который вы хотите удалить. Может быть, он удален или вы можете удалить его.
100% работает
Предупреждение: эти инструкции потребуют один, чтобы использовать
debugfs, Они могут привести к потере данных.Они адаптированы к исходной проблеме и могут быть точными или неточными для любых будущих посетителей этой страницы. Любая потеря данных может быть непоправимой или даже усугублена
fsck,
Это может быть потерянный инод. Пожалуйста, запустите ls -li чтобы получить список номеров инодов, вы можете попробовать сбросить указанный инод. Например, если ваш ls -li выглядит следующим образом:
rarkenin@ubuntu-alt-64-vbox-1:~$ ls -li
total 58672
4980758 -rwxr-xr-x 2 rarkenin rarkenin 4096 Sep 23 18:45 panorama.jpg
---SNIP---
затем номер индекса 4980758, как показано в списке в качестве первого столбца.
Затем вы можете попытаться сбросить индекс. Пожалуйста, прочитайте весь пост, прежде чем делать что-либо.
Начните
debugfsкак корень:rarkenin@ubuntu-alt-64-vbox-1:~$ sudo debugfs [sudo] password for rarkenin: debugfs 1.42 (29-Nov-2011) debugfs:и дать команду
open /dev/sda1с правильным блочным устройством для вашего раздела.Затем дайте команду, чтобы сбросить индекс, номер которого вы получили ранее:
cat <4980758>с помощью
<а также>вокруг номера инода.Если он читает какой-то случайный текст, закройте терминал и откройте его снова. Бежать
debugfsснова и датьopenкоманда снова.Теперь вы можете попробовать удалить файл. Это может привести к серьезному повреждению файловой системы.
debugfs: rm [filename] debugfs: unlink [filename] debugfs: kill_file [filename] debugfs: kill_file <inode>
Обратите внимание, что это можно сделать, даже если выяснится, что в файле никогда не было inode. Попробуйте команды по одной в порядке, указанном выше. Выйдите из debugfs и проверьте, существует ли файл. Если нет, начните снова, но следуйте следующей инструкции.
Сделайте резервную копию, если это возможно!
Глядя на ваши скриншоты, я вижу, что группа установлена в качестве пользователя root. Я бы попробовал использовать chown и посмотреть, решит ли это проблему.
sudo chown -hR [username]:[username] /home/[username]
Замена [имя пользователя] на ваше имя пользователя.
Вы получите пару ошибок.

Как сказал ubfan1, непечатные символы в именах файлов могут вызвать такие проблемы.
- потрогать
- комната
работал для меня, так как "touch" перезаписал поврежденный файл.
Linux Mint 18.3 Мой несуществующий файл был "filename.pdf.crdownload". Он был обнаружен на моем рабочем столе в виде пакета, то есть zip-файла в Windows. Для этого я щелкнул правой кнопкой мыши Свойства, Открыть с помощью, который показал нулевые приложения, поэтому я изменил его на Открыть с помощью "Менеджера архивов". Сразу файл исчез с моего рабочего стола. т.п.н.
Сначала войдите как root с sudo -s
Вы можете попробовать сделать rm -v <file> и просмотрите подробный вывод, чтобы увидеть, что происходит при попытке удалить файл. Проверьте параметры для команды ниже.
Если это не помогло, вы можете использовать опцию Force, как и все остальные. Вы также можете попробовать удалить весь каталог, принудительно выполнив рекурсивное удаление: rm -rfv **full directory address here**
Из руководства по UNIX:
СИНТАКСИС
rm [OPTION]... FILE...
ОПИСАНИЕ
rm removes each file. By default, it does not remove directories.
If a file is unwritable, the standard input is a tty, and the -f or
--force option is not given, rm prompts the user for whether to remove
the file. If the response is not affirmative, the file is skipped.
ОПЦИИ
Remove (unlink) the FILE(s).
-f, --force
ignore nonexistent files, never prompt
-i, --interactive
prompt before any removal
--no-preserve-root do not treat '/' specially (the default)
--preserve-root
fail to operate recursively on '/'
-r, -R, --recursive
remove directories and their contents recursively
-v, --verbose
explain what is being done
--help display this help and exit
--version
output version information and exit
By default, rm does not remove directories. Use the --recursive (-r or
-R) option to remove each listed directory, too, along with all of its
contents.
To remove a file whose name starts with a '-', for example '-foo', use
one of these commands:
rm -- -foo
rm ./-foo
Note that if you use rm to remove a file, it is usually possible to
recover the contents of that file. If you want more assurance that the
contents are truly unrecoverable, consider using shred.
Непечатные символы в именах файлов могут вызывать такие проблемы, как пробел. Попробуйте интерактивную опцию rm и скажите "Y" файлу, который вы хотите удалить ".
rm -i "*pan*" Обратите внимание на использование *s для сопоставления любых (даже не напечатанных) символов.
Может быть, был удален индекс, но не запись каталога. Попробуйте ls -i, чтобы увидеть иноды. fsck файловая система, чтобы решить проблему такого рода.
У меня была такая же проблема с файлом, созданным пользовательской веб-базой EMR (электронная медицинская карта) в Chrome. sudo touch /forcefsck с последующим перезапуском работал у меня и ароматически удалял файл. Взята помощь из следующих страниц
Покажи нам терминал.... сделай ll | grep panorama и покажи нам это; добавь это к своему вопросу...
Мое предложение сделать как root rm -f panorama.jpg,
в человеке из рм я нашел это:
-f, --force
ignore nonexistent files, never prompt