Какую команду я должен использовать для удаления файла, названного '-rf'?

Я сделал что-то сумасшедшее в какой-то момент, которое создало названный файл -rf в моей файловой системе.
Теперь я не могу выяснить, как удалить его...

Я попробовал:

rm "-rf"
rm \-rf

Они просто сразу выходят, arrgh!

Кто-либо знает, как удалить этот файл? Предпочтительно, случайно не вычищая мою целую папку.

68
задан 10.05.2017, 17:38

12 ответов

unlink -rf

Или

rm -- -rf
128
ответ дан 07.12.2019, 08:12

Другая опция:

rm ./-rf

... принятие Вашего текущего каталога является тем, где файл находится.

61
ответ дан 07.12.2019, 08:12

Кроме того, можно всегда редактировать каталог в и удалять файл тот путь.

vim .

и затем просто удалите строку с файлом на нем (использующий D, dd не будет работать).

34
ответ дан 07.12.2019, 08:12

Универсальная техника для удаления странных имен файлов состоит в том, чтобы использовать.

 ls -li

найти inode количество файла и затем использовать.

find ./ -inum <number of file> -delete

Никакая потребность помнить все особые случаи.

25
ответ дан 07.12.2019, 08:12

Даже при том, что я знаю о "комнате - имя файла" прием, обычно когда я так или иначе получаю файл с продвижением - на его имя, которое я хочу удалить, я запускаю файловый менеджер GUI и делаю это оттуда, для устранения шанса ошибок.

17
ответ дан 07.12.2019, 08:12

Если Вы просто хотите быть уверенными:

 mv -- -rf remove.-rf
 [[check]]
 rm remove.-rf
9
ответ дан 07.12.2019, 08:12

На всякий случай Вы находитесь на некотором Unix не-GNU, где Вы чувствуете себя, дергал назад к каменному веку (нет -- синтаксис, нет -inum переключитесь, чтобы найти, нет удалить связь с командой, Ваш редактор отказывается от каталогов редактирования и т.д. и т.д.), можно все еще помочь себе:

find . -name '-rf' -print | xargs rm -i

Это вызовет, находят для питания всех потенциальных кандидатов к комнате, которая в свою очередь попросит разрешение/отказ для каждого файла, это питается.

В случае, если Ваш rm даже не поддерживает -i переключатель (HP-UX 10.2 на PA-RISC 1.1 кто-либо?), просто быть более осторожным:

find . -name '-rf' -print
# check that find's output is exactly and only what you need to delete
find . -name '-rf' -print | xargs rm
4
ответ дан 07.12.2019, 08:12

Поддерживая ответ jleedev, я улучшился бы с:

rm -i -- -rf

быть в интерактивном режиме и попросить подтверждение, таким образом, можно действительно быть уверены в том, что Вы удаляете. (хотя решение прекрасно. это просто для Вашего душевного спокойствия),

На самом деле даже используйте это:

\rm -i -- -rf

быть уверенным, что Вы не используете псевдонимов.

3
ответ дан 07.12.2019, 08:12

Поскольку было уже предложено, чтобы я всегда использовал синтаксис

rm -rf -- filename

когда я должен был удалить файл с тире как префикс, потому что - говорит команде, что это не ищет никакой другой параметр, но просто имена файлов.

Имение в виду его, для защиты моей важной папки случайным удалением файла, я использовался для создания пустого файла, названного просто-i, который обычно помещается наверху списка файлов при разрешении * поиск. Так команда

rm -rf *

когда excuted на моей защищенной папке взорван, dureing выполнение, в команде:

rm -rf -i filename1 filename2 .... (all the other files in the folder)

и оболочка, вместо того, чтобы сразу удалить все, прекращает просить подтверждение (поскольку-i опция требует).

2
ответ дан 07.12.2019, 08:12

В прошлый раз, когда у меня была эта проблема, я решил ее с:

Python

импорт OS

os.remove ("-rf")

2
ответ дан 07.12.2019, 08:12

martin clayton является правильным.

Это очень просто и логично. Если опции существуют, это всегда -XXX или --CCCC таким образом, если Вы помещаете a ./ или полный путь -rf не может быть рассмотрен как опцию и будет рассмотрен как нормальную строку.

Это работает со "всеми" странными именами файлов.

#pwd
/tmp/TEST
#touch ./-rf
#ls 
-rf
#rm ./-rf 
#ls
#
1
ответ дан 07.12.2019, 08:12

комната-rf большинство инструментов гну принимает - как маркер конца опций

1
ответ дан 07.12.2019, 08:12

Теги

Похожие вопросы