Избавление от файла с именем «-d» [дубликат]

18

Возможные дубликаты:
Как мне удалить файл с именем "-p" из bash?
Как удалить файл с этим именем в Linux: -] ??????? q
Какую команду мне нужно использовать, чтобы удалить файл с именем `-rf`?

Я случайно создал файл с именем: -d

Я пытался использовать одинарные и двойные кавычки, а также подстановочные знаки, чтобы удалить его, но каждый раз, когда «гм» ​​дает мне эту ошибку:

Предупреждение: опция --directory (-d) недокументирована и не используется. Используйте -rf для удаления непустых директорий. Rm: отсутствующий операнд. Попробуйте `rm --help 'для получения дополнительной информации.

Как мне избавиться от файла?

Филеас Фогг
источник

Ответы:

44
rm -- -d

--означает «конец опций». Все, что находится дальше в командной строке после этого, интерпретируется как аргумент (т. Е. Имя файла в вашем случае), а не как опция.

Маттео Рива
источник
28
rm ./-d

это ответ на ваш вопрос.

bmargulies
источник
1
rm -- -dработает также
Ульрих Дангел
Это лучшее решение
gd1
8

Использование '-' является самым простым в данном конкретном случае. Тем не менее, более общее решение, если вы наткнетесь на файл с непечатными управляющими символами, это сослаться на файл по индоду:

% ls -ali aFileWithFunnyCharacters
      9215 -rw-r-----   1 chris  chris         0 Sep  8 16:55 aFileWithFunnyCharacters
% find . -xdev -inum 9215 -exec rm {} \;
% ls -ali aFileWithFunnyCharacters
aFileWithFunnyCharacters: No such file or directory
che2cbs
источник
0

У Gnu-find есть опция -delete:

find -name "-d" -delete

иначе вы могли бы попробовать

find -name "-d" -exec rm {} ";" 

но - решение сверху короче, и способ прекратить интерпретацию флагов с помощью - используется многими программами, использующими библиотеку getopt, поэтому изучение его вообще полезно.

Но найти / -delete тоже очень полезно. Обратите внимание, что в обоих примерах рекурсивно удаляются файлы с именем «-d», что может случаться не часто, но если у вас есть один файл с именем «-d», возможно, их будет больше. :)

Пользователь неизвестен
источник