Я пытаюсь переименовать файл с дефисом в начале его имени, и оба это:
mv -example-file-name example-file-name
и это:
mv '-example-file-name' example-file-name
результат в:
mv: invalid option -- 'e'
linux
command-line
bash
shell
Десмонд Хьюм
источник
источник
mv *example-file-name example-file-name
имеет ту же проблему, потому что расширение имени файла (AKA globbing) происходит до того, какmv
вызывается.Ответы:
Большинство команд GNU / Linux позволяют
--
указывать конец параметров, чтобы последующие-
префиксные слова не рассматривались как параметры.Небольшой тест
источник
rename
тоже. (по крайней мере, версия, которая работает какrename [options] <expression> <replacement> <file>...
, какая бы она ни была.)mv
этого нет :(Ответ RedGrittyBrick очень хороший. Другой вариант:
Небольшой тест:
источник
--
.Вы можете использовать это:
что он может переименовать весь файл :), если ваше имя файла:
после запуска кода ваше имя файла становится:
источник
Этот трюк работает для меня во времена отчаяния. YMMV
Вы должны избежать дефиса для переименования, чтобы распознать его. Почему переименование не учитывает одинарные кавычки или предлагает какое-либо переопределение, мне не понятно.
Это единственный метод, который я видел, который надежно обрабатывает ведущий дефис, используя переименование. Я согласен с другими сообщениями об использовании mv, но если вы не можете использовать mv по какой-либо причине, это работает.
источник