Ответы:
Практически идеальное решение для файлов, которые нельзя удалить обычными средствами:
ls -il
В первом столбце будет показан номер индекса файлов.
find . -inum [inode-number] -exec rm -i {} \;
Это удалит файл с указанным номером inode после проверки.
-delete
вместо -exec
, а затем понял, что вы используете, rm -i
что является хорошей идеей, поэтому я откатился назад. Сожалею.
Вы должны иметь возможность ссылаться на этот файл как ~/~
(без кавычек), потому что расширение тильды применяет тильду ( ~
) только в самом начале слова.
rm ./~
, по той же причине, по которой вы сказали
./~
буквально означает «файл или папку с именем ~
в текущем каталоге» . Нет таких хаков, как escape-символы или ссылки на inode.
./~
делает. Спустя пять лет моя память немного размыта, но я думаю, что именно поэтому я предложил, ~/~
а не более нормальный ./~
: вопрос конкретно относится к «файлу, названному ~
в домашнем каталоге [OP's] »; не "в текущем каталоге".
Цитируйте это ( rm '~'
) или избегайте этого ( rm \~
).
Это всегда либо один из них (также, например, $
), либо add, --
чтобы имя файла не интерпретировалось как аргумент: rm -- -i
удаляет файл с именем -i
; также полезно, rm -- *
когда вы хотите удалить все файлы в текущем каталоге: не случайно, rm -f *
только потому, что файл назван так.
--
только останавливает следующие аргументы, интерпретируемые как параметры - это не мешает оболочке выполнять расширение (например *
), что и происходит здесь. (Я знаю, что вы предложили это в качестве альтернативы для других ситуаций, но было бы неплохо предупредить.)