я пробовал
rm -- -
rm "-"
rm "\-"
rm \-
Дал Perl выстрел
~$ perl -e '$junk = glob("-"); chomp $junk; print "$junk\n"; `rm $junk`;'
-
rm: cannot remove `-': No such file or directory
...а также...
~$ perl -e '$junk = glob("-"); chomp $junk; print "$junk\n"; `mv $junk newfile.garbage`;'
-
mv: cannot stat `-': No such file or directory
Любая помощь будет высоко ценится, мудрые люди.
rm
версию вы используете (rm --version
)?rm -
отлично работает с GNU coreutils 8.5.rm ./-
Ответы:
Раньше это было опубликовано в часто задаваемых вопросах Usenet для Unix - я вижу, что это в часто задаваемых вопросах по GNU Core Utility . Было как минимум пять разных методов, но это хорошо работает:
Если имя файла содержит нетипизируемые символы, используйте:
-i
Флаг запрашивает подтверждение для каждого файла , если она должна быть удалена или нет.источник
Удаление файла, чьи имена начинаются с,
-
- это часто задаваемые вопросы, но похоже, что у вас другая проблема.Из решений, которые вы упомянули в вопросе:
Это должно работать.
Это ничем не отличается от
rm -
. Кавычки отбрасываются оболочкой, иrm
команда просто видит один дефис в качестве аргумента. Кавычки полезны для экранирования метасимволов оболочки; дефис является особеннымrm
, а не оболочкой.Кавычки экранируют обратную косую черту, поэтому при попытке удалить файл, имя которого состоит из двух символов, обратной косой черты и дефиса.
Это так же, как
rm "-"
, эквивалентноrm -
.Как это происходит, по крайней мере в версии GNU coreutils
rm
,rm -
фактически удаляет (или пытается удалить) файл, имя которого состоит только из дефиса. Если бы у вашего файла было это имя, оно уже исчезло бы. Я делаю вывод, что у вашего файла есть имя, которое выглядит только как дефис.должен дать представление о том, что это на самом деле называется.
Вот сценарий Perl, который я только что скомбинировал, который подскажет вам для каждого файла в текущем каталоге и спросит, нужно ли его удалить. Предлагается без гарантии, но я проверил это вкратце.
РЕДАКТИРОВАТЬ : менее сложное решение: если имя файла только один символ, то
rm ?
следует удалить его (вместе с любыми другими такими файлами).источник
M-bM-^@M-^S
представляет собой 3-байтовое представление UTF-8 символа Unicode "EN DASH", 0x2013. Интересно, вы случайно скопировали и вставили его с веб-страницы?rm -i *
не работает? Похоже, он будет делать то же самое, что и скрипт perl./^y/i
предпочел, чем/y/i
. В конце концов, русский пользователь может напечатать "Nyet".Если вы хотите что-то более безопасное ...
Попробуйте использовать комбинацию ls и find (это работает для любого файла, который вы можете удалить)
Параметр '-i' даст вам номер инода для каждой записи каталога ls -li
Как только у вас есть номер инода ...
источник
-exec rm -i {}
том,-i
чтобы запросить удаление. Я смотрюman find
и не вижу никакого способа сделать это.Дай
rm ./-
попробовать.-
Представляет собой флаг , чтобы начать аргумент флага. Если вы начинаете аргумент с чего-либо, кроме a-
, в этом случае/
он будет считать, что это имя файла. Что ты хочешь?А так как
file
и./file
являются одним и тем же файлом, он будет нацелен на файл с именем-
via./-
.источник
Не такой отвратительный, как большинство других ответов, но я бы запустил экземпляр
mc
Midnight Commander и просто выбрал и удалил файл.источник
Пытаться:
чтобы увидеть, есть ли в имени файла непечатаемые символы.
источник
Не то чтобы здесь нужно было использовать perl, но это должно работать:
или посмотреть, что может быть любой ошибкой с вышеперечисленным:
источник
Мне повезло, используя GNOME Nautilus для удаления плохо названных файлов. Вы используете X-сервер? Я уверен, что другие файловые браузеры тоже будут работать.
источник
Если
не работает, имя файла не "просто дефис". Если в других файлах нет дефиса, попробуйте
источник
Пока что я получаю «Нет такого файла или каталога» для каждого метода, опубликованного до сих пор:
Похоже, у меня есть версия 7.4. Я постараюсь обновить и повторить эти предложения. Спасибо всем за помощь.
источник
Я очень люблю использовать
dired
режим в Emacs для такого рода вещей - просто "открыть" каталог в Emacs. Вы можете легко выбрать файлы и пометить их для удаления.Другой плакат предложил использовать полуночного командира; это почти та же идея, но если вы уже являетесь пользователем emacs, возможно, это более удобно.
источник
Должен быть в состоянии сделать
rm -f '-'
работал для меня в CygwinВ этом отношении,
rm -
также, кажется, работает над красной шляпой.источник
rm -
у меня тоже работает.