Не удается удалить : нет такого файла или каталога
Я просто запустил какую-то самозанятую программу, в которой я делаю файлы и наполняю их материалом. Тем не менее, я сделал что-то неправильно (или, по крайней мере, не так, как предполагалось) с генерацией имен, и теперь в папке есть четыре файла, которые нельзя удалить, поскольку они «не существуют».
rm -rf folder : (с папкой, являющейся папкой, в которой находятся файлы)
find . -type f -delete find . -type f -delete : (как из ответа Удиты Десильвы)
strace -o out rm -f — * : Содержание вне
Как удалить эти файлы?
Важно отметить, что у меня нет корневого доступа, поэтому я бы предпочел вариант, который этого не требует.
Просто удалите файл из UI как «Переместить в корзину». а затем перейдите в корзину и удалите оттуда. Этот процесс навсегда удалит ваш файл из вашей Linux-системы.
Такое поведение связано с отсутствием разрешения на выполнение в каталоге, пользователь не может выполнить stat() но может читать записи dir.
Чтобы этого избежать, вы можете сделать chmod 700 в основной каталог.
Чтобы воспроизвести это поведение, вы можете сделать chmod 600 или chmod 400 в любом каталоге, и у него будет такая же проблема.
Это похоже на то, что вам удалось написать мусор в самом дескрипторе каталога, а не в файлы внутри него. Однако попробуйте
который не пытается делать расширения оболочки файлов и может, таким образом, преуспеть.
EDIT: ответ tachomi, по-видимому, является наиболее вероятным объяснением, но невозможно «cd» в каталог с режимом 400 или перечислить его «содержимое», когда вы в нем, так что это не идеально подходит либо :
Однако удаление могло работать, если процесс удаления графического интерфейса изменил разрешения каталога «за кулисами» до удаления.
Источник
«Нет такого файла или каталога» при попытке удалить файл, но файл существует?
Я пытаюсь удалить изображение PNG, которое было загружено на мой сервер с помощью сценария PHP. Всякий раз, когда я пытаюсь удалить его как через FTP и терминал, я получаю сообщение об ошибке
Тем не менее, когда я ls в директории файл указан и он также указан в моем ftp-клиенте. Я попытался создать файл с тем же именем, и я получаю два файла с одинаковым именем.
Я могу открыть файл, который предположительно не существует, но я все еще не могу удалить его. Я также попытался перезагрузить свой сервер. Есть идеи, в чем может быть проблема? Я использую 64-битную версию Ubuntu, но не думаю, что это 32/64-битная проблема. Я должен также отметить, что я удалил много других файлов png, загруженных тем же PHP-скриптом.
Вывод при попытке rm
6 ответов
Я попытался создать файл с тем же именем, и я получаю два файла с одинаковым именем.
Это означает, что при отсутствии повреждения файловой системы у вас есть два файла с двумя разными именами, которые выглядят одинаково из-за непечатаемых символов или символов, которые выглядят одинаково в вашем наборе символов / шрифте. —escape возможность ls Ваш друг в таких случаях, как и такие инструменты, как cat -v ,
Так тоже есть rm -i — *
дальнейшее чтение
TL;DR: запустить ls -1b найти имя файла, скопировать строку, в которой оно появляется, и дать его rm ,
Как и предполагали другие, скорее всего, это связано с ограничениями в способе ls — и некоторые другие программы, включая клиентское и серверное программное обеспечение — по умолчанию обрабатывают странные имена файлов, например, содержащие управляющие символы. Ваш успех с ответом JdeBP убедительно свидетельствует о том, что так оно и было, хотя и до этого было бы неплохо.
За ls когда стандартный вывод является терминалом, ? символы печатаются на своих местах. Так что, если вы не пьяный ls вывод любой другой команды (или перенаправление ее в журнал для просмотра), возможно, ваше имя файла не содержит управляющих символов. Но есть и другие проблемные символы — например, имя файла содержит конечные пробелы.
Это поведение ls может сбивать с толку, но не является ошибкой, может быть явно переопределено пользователем (см. ниже).
При попытке получить доступ к файлу или удалить его удаленно, ошибки в клиентском или серверном программном обеспечении могут привести к таким проблемам.
Я испытал такого рода вещи через ftp я несколько раз, в том числе для файлов, имена которых содержат завершающие пробелы. (То, что это не сработало, было связано с ошибкой в моем ftp-клиенте.) Даже когда вы вручную создаете файл, в зависимости от того, как вы его создаете, иногда довольно легко случайно вставить конечный пробел или другой пробел, который может выглядеть как пространство, хотя это не так.
Это ситуация, когда ls -1b (или же dir -1 ) пригодится:
- -1 говорит ls показать одну запись в строке. Таким образом, не возникает путаницы в том, где заканчивается одно имя файла и начинается другое. Это удобно для файлов со странными именами.
- -b говорит ls печатать escape-последовательности для любых специальных символов. Выход из ls -b могут быть скопированы и вставлены буквально в команду, без добавления кавычек: все проблемные символы уже заключены в кавычки таким образом, что оболочка распознает их такими, какие они есть.
Предостережение только одно: если последний символ в строке \ скопируйте один символ после этого, так как это означает \ цитирует пробел.
Вы можете запустить ls -1b просто так, или вы можете передать ему шаблон оболочки (например, ls -1b qyx* ). Globbing может или не может найти файл, в зависимости от того, присутствуют или нет управляющие символы (или другие странные символы) в той части имени, которая появляется в шаблоне glob.
Скопировав \ версия имени файла, данного вам ls Вы можете вставить это в команду. Вам не нужно изменять его вручную каким-либо образом. В вашем случае, если вы хотите удалить файл, введите rm введите пробел, вставьте строку и нажмите Enter .
Источник
Удаление неудаляемых файлов
Помогите пожалуйста разобраться
Debian GNU/Linux stretch/sid (64 bit)
Есть ntfs раздел, в нем дирректория с киношками
В виртуалке (windows XP) я чего-то там химичил (редактировал, удалял, копировал), потом был скачок напряжения, после перезагрузки не могу удалить некоторые файлы
вот что ls -l говорит:
Это чтото с ntfs собственно.
Скопируй с винта данные, проверь их целостность и отформатируй диск.
Хотя может это просто битые кластеры?
chkdsk в виртуалке (или с Live CD) как-то стремно делать
Встань, страх преодолей и достань рукой до звёзд!
Если серьёзно, почему стрёмно-то?
Не невредит ли оставшемуся?
Винда-ить
ФС побилась, бывает. AFAIR, Linux не умеет нормально чинить NTFS, весь fsck.ntfs сводится к выставлению бита «нужно проверить ФС», и ФС чинится средствами винды (пресловутым chkdsk). Так что install cd винды в дисковод — и вперёд, recovery mode on.
Да эт ясно, диск 2G куда ж его скопировать?
Ну ведь и в Микрософт, чай, не совсем страшные индусы сидят, особенно на таких низких уровнях системы, как драйвер ФС и chkdisk. Если ты не доверяешь chkdisk, то как же ты доверяешь Винде работать со своими данными?
Если ты боишься, надо искать где-то другой диск на 2 Тб, скопировать туда читающиеся данные и проверять старый.
Да, видать не обойдется без этого (chkdsk)
Ну, если там реально данные сломались, то от того боишься ты или нет данные не восстановятся. Так что смело проверку запускай, хуже ты уже не сделаешь.
а причём майкрософт к нтфс? её им ibm делала.
Что побито — то побито. Всё не грохнет, но что прочитать не сможет — да.
Источник
Нет такого файла или каталога
Приветствую. Проблема такая — скачал игру (ее нет в репозиториях), распаковал, пытаюсь запустить — получаю
chmod +x cataclysm-tiles
Сделал естественно, не помогает.
Попробуй полный путь указать (/home/user/Downloads/cataclysmdda-0.B/cataclysm-tiles) или через cataclysm-launcher
Покажи еще вывод file cataclysm-tiles и uname -a.
Покажи еще вывод file cataclysm-tiles и uname -a.
Попробуй полный путь указать (/home/user/Downloads/cataclysmdda-0.B/cataclysm-tiles) или через cataclysm-launcher
Спасибо, помогло. Правда пришлось ставить кучу всего дополнительно, но заработало.
Ну да, я собственно это и имел в виду:
ELF 32-bit LSB executable
x86_64 x86_64 x86_64
Источник
Не получается удалить файл — операция не позволена
Дистр/система-то какая? В BSD есть «супер» флаг у файлов.
Пробовал уже, то же самое.
ps: может папка bin только для чтения?
Проверил на соседнем бинарнике — нормально удалился.
Стим запущен? Может flock делает на файле или типо того?
//me не специалист, просто предполагаю
cast alpha4
Steam не запущен.
Пакет изначально устаналивался из AUR:
Потом приплыло обновление из комьюнити-репозитория:
После чего я снёс проблемный пакет, а файл так и остался.
Вон оно че. У вас в стиме можно так?!
chmod 775 /usr/bin/steam ; rm -f /usr/bin/steam
Спасибо за найденное решение 🙂
Выставление прав доступа тоже не было позволено.
Что-то я не понял, как они это сделали?
А тут не понимать надо, а знать.
A file with the `i’ attribute cannot be modified: it cannot be deleted or renamed, no link can be created to this file and no data can be written to the file. Only the superuser or a process possessing the CAP_LINUX_IMMUTABLE capability can set or clear this attribute.
зы: я тоже не знал 🙂
У меня похожая проблема. chattr пишет chattr: Неприменимый к данному устройству ioctl while reading flags on brightness
А к чему ты пытаешься его применить? Почитай man там много зависит от типа fs и опций монтирования.
путь /sys/class/backlight/acpi_video0/brightness. Файловая система ext4. В файле нужно изменить значение, а он даже под рутом не редактируется/удаляется/перезаписывается.
У меня в /sys файловая система sysfs.
Я делал только один раздел под ОС, не монтируя boot, home и прочее в разные разделы. Или он в любом случае будет sysfs?
Неужели его (Файл) никак не изменить?
бгг. RTFM про chattr
такое иногда ещё в /tmp бывает на некоторых дистрах с разными прикольными флажками — ну типа, читать низзя, типа, чукчка не читатель, чукча — писатель. в ASPLinux (не к ночи помянут!) точно такое было.
Не подскажете все таки как изменить права и возможно ли это?
тут жеж уже напейсали:
chattr -i FILE тама кстате ещё флаги есть, забавно ещё a поставить.:-)
chattr: Неприменимый к данному устройству ioctl while reading flags on /sys/class/backlight/acpi_video0/brightness
chattr
дык на /sys не будет работать. на /proc ЕМНИП — тоже.
chattr: Неприменимый к данному устройству ioctl while reading flags on /sys/class/backlight/acpi_video0/brightness
это потому, что /sys/ НЕ является нормальной ФС. И файлы там тоже особые. Ты хоть видишь, ЧТО ты удаляешь? Как ты представляешь себе УДАЛЕНИЕ ЯРКОСТИ МОНИТОРА.
Если уж хочешь удалить, снеси дрова(модуль, ядро), и перезагрузись. Удалится.
Я не хочу его удалять, я хочу изменить значение яркости в файле, написано же все выше, могли бы и прочитать сначала.
Я не хочу его удалять, я хочу изменить значение яркости в файле, написано же все выше, могли бы и прочитать сначала.
да читал я — пойми ЭТО НЕ ФАЙЛ. В этом вашем линуксе всё — файлы, это совсем не значит, что ты можешь мышку удалить/заменить путём операций с /dev/mouse. Голову тоже надо иногда подключать. Процессы тоже так не удаляются, есть команда kill, для завершения процессов. И это не смотря на то, что для каждого процесса есть «каталог» в /proc/.
Мессадж «операция не позволяется» вообще не имеет отношения к правам, а появляется тогда, когда ты что-то делаешь не так. Например пытаешься писать на CD-ROM. Просто EXT4 имеет ценную фичу — она умеет отдельно для каждого файла делать «CD-ROM», в который нельзя писать, а можно только читать. Ещё она имеет CD-R, в который можно только добавлять, а стирать и удалять — нельзя. Но у тебя не EXT4, это специальные каталоги, их нет на диске. Только одна видимость. И авторы драйверов не осилили такой способ изменения яркости, либо вообще, либо ты неправильно пишешь/открываешь.
Да читал я — пойми ЭТО НЕ ФАЙЛ. Мессадж «операция не позволяется» вообще не имеет отношения к правам, а появляется тогда, когда ты что-то делаешь не так. Например пытаешься писать на CD-ROM. Просто EXT4 имеет ценную фичу — она умеет отдельно для каждого файла делать «CD-ROM», в который нельзя писать, а можно только читать. Ещё она имеет CD-R, в который можно только добавлять, а стирать и удалять — нельзя. Но у тебя не EXT4, это специальные каталоги, их нет на диске. Только одна видимость. И авторы драйверов не осилили такой способ изменения яркости, либо вообще, либо ты неправильно пишешь/открываешь.
$ su —
Пароль:
[root@aquila
]# echo 4 > >/sys/class/backlight/acpi_video0/brightness
Извините ошибся /sys/class/backlight/acpi_video0/actual_brightness
Источник