Не удалось удалить файл с именем, подобным аргументу команды [duplicate]

средняя температура моего ноутбука составляет от 50 до 55 градусов Цельсия. Когда ни одно приложение не работает, оно уменьшается до 35-37 градусов Цельсия, и когда мое использование процессора достигает 80%, тогда температура моего процессора составляет 70 градусов Цельсия. .

1
задан 5 August 2014 в 19:37

4 ответа

Существует много способов сделать это:

Используйте --, который обозначает конец флажков параметров и начало списка аргументов для многих программ (в том числе rm).
rm -- -r
Используйте полный путь
rm /home/you/directory/-r
или из того же каталога (ваш текущий каталог называется .):
rm ./-r
Используйте find
find . -name "-r" -exec rm {} \;
или, чтобы получить все такие файлы
find . -name "-*" -exec rm {} \;
Использовать уродливый взлом. Переместите все в другой каталог (это приведет к сбою для файла -r по той же причине, что и rm), а затем удалит исходный каталог (который удалит файл) и переместит все обратно. Итак, если ваш файл -r находится в ~/foo:
$ mkdir ~/bar
$ for f in *; do mv "$f" ../bar/; done
mv: invalid option -- 'r'
Try 'mv --help' for more information.
$ rm -rf ~/foo
$ mkdir ~/foo && cd ~/foo
$ mv ~/bar/* .
$ rmdir ~/bar
44
ответ дан 24 May 2018 в 06:44
  • 1
    Для третьего варианта find . -name "-r" -delete еще короче. Вы также можете использовать -maxdepth 1, если хотите удалить только поврежденный файл в текущем каталоге, но не рекурсивно во всех подкаталогах. – Malte Skoruppa 18 September 2015 в 01:46
  • 2
    @MalteSkoruppa true, я склонен избегать опций GNU, но на этом сайте нет оснований. – terdon♦ 18 September 2015 в 14:33

Вы также можете удалить такие файлы (начиная с '-') с помощью этой команды:

rm ./-r

См. справочную страницу rm:

Чтобы удалить файл, имя которого начинается с '-', например '-foo', используйте одну из следующих команд:
rm -- -foo

rm ./-foo
8
ответ дан 24 May 2018 в 06:44

Или вы можете указать полный путь к каталогу в команде rm,

Пример:

rm -rf ~/Desktop/-r
2
ответ дан 24 May 2018 в 06:44

Вы также можете использовать команду unlink (если она у вас есть), которая не принимает никаких параметров и один аргумент. Таким образом, unlink -- -r удалит файл с именем -r

1
ответ дан 24 May 2018 в 06:44
  • 1
    Только unlink -- -r работал для меня – Sylvain Pineau 12 June 2014 в 18:59
  • 2
    Я думаю, что последнее редактирование, предназначенное для улучшения ответа в свете сообщения Сильвена Пино, на самом деле делает его еще хуже. Теперь текст не согласуется с командой примера ... и даже если текст был изменен, чтобы он согласился, я думаю, что все будет не так. Я подозреваю, что правда в том, что некоторые системы описываются как описано Abigail (unlink не принимает никаких параметров, поэтому unlink -r будет работать и отключаться - -r не будет), а другие системы - как отчеты Sylvain Pineau (unlink -r работает, unlink -r нет). Так что полезный совет может быть «вы также можете использовать unlink, хотя он менее портативен, чем другие методы ... " – Don Hatch 14 June 2014 в 08:05

Другие вопросы по тегам:

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