Как удалить файл с таким именем в Linux: -] ??????? q [duplicate]

14

Каким-то образом файл с именем -]???????qбыл создан на моем терминале. Я пробовал rm -f "-] ??????? q" (в двойных кавычках), но он не удалялся. (Ошибка ::) rm: invalid option -- ]. Как мне это удалить?

djsmiley2k TMW
источник
У меня была похожая проблема, в моем случае проблема была с реализацией samba, просто попробуйте ssh на сервер, а затем удалите его
Buksy

Ответы:

26

Например, с:

rm -- '-]???????q'

Где --означает: «прекратить синтаксический анализ вариантов».

Кир
источник
Действительно, я столкнулся с подобной проблемой, даже не думая о том, чтобы быть переключателем. Клянусь, я потратил как 2 часа, пытаясь понять это.
Джефф Ф.
Многие приложения используют --, думаю, это своего рода стандарт де-факто из-за getoptфункции.
cYrus
13

Вы можете использовать имя файла с rm или номер индекса с помощью команды find:

rm -- -]???????q
# or
  -> ls -i                                                                                                                         
47984689 blah.ui  47983771 __init__.py  
47983773 testpy.e4p  47985161 Ui_blah.py

  -> find -inum 47983773                                                                                                           
./testpy.e4p

  -> find -maxdepth 1 -inum 47983773 -exec rm -i '{}' \;
#or
  -> find -maxdepth 1 -inum 47983773 -delete
OneOfOne
источник
Добавьте -maxdepth 1, иначе команда find найдет итерацию по всем подкаталогам:find -maxdepth 1 -inum 47983773 -delete
Fabian Ritzmann
@FabianRitzmann хороший звонок, я добавил это.
OneOfOne
1
Это должен быть выбранный ответ. Доступ к файлу с недопустимыми символами в его имени по iNode - единственный правильный путь.
ScumCoder
1
rm ./"-]???????q"

Двойные кавычки не позволяют оболочке расширять метки запроса. Например, если у вас был другой файл с именем -] foobar.q :

$ touch ./"-]???????q" ./-]foobar.q
$ echo ./-]???????q
./-]foobar.q ./-]???????q
марко
источник
Ой. Я поместил цитаты, но пропустил./