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


18

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

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

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

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

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

Ответы:


44
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», возможно, их будет больше. :)

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.