18

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

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

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

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

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

4 ответа4

44
rm -- -d

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

28
rm ./-d

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

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
0

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

find -name "-d" -delete

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

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

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .