5

Я создавал файлы с нечетными именами время от времени, например

$ls -rthl
$-rw-r--r--  1 shamil hep  290 Aug 13 11:58 -rf

И что интересно, удалить этот файл невозможно

rm -f -rf

Я знаю, что мне нужно избегать специальных символов, таких как "-", поэтому проблема ясна. И я знал решение, но с тех пор забыл.

Как мне правильно удалить его?

Я пробовал такие вещи

rm -f \-rf

но безрезультатно.

3 ответа3

13

-- switch означает: конец флагов, все после того, как предполагается, что это имя файла. Так что вы можете сделать:

rm -- -rf

Включите полный путь к файлу, также работает:

rm /full/path/to/-rf

На самом деле, это довольно смешно, но эта командная строка может дать вам ответ :)

$man rm | cat | grep -B4 -A3 -- "rm --"

To remove a file whose name starts with a `-', for example `-foo', use 
one of these commands:

rm -- -foo
rm ./-foo
8

Ты можешь сделать

rm -rf ./-rf

Это сделает так, чтобы -rf не начинался с - .

2

по-другому:

find -name "-rf" -exec rm {} \;

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