Я пытаюсь переименовать файл с дефисом в начале его имени, и оба это:
mv -example-file-name example-file-name
и это:
mv '-example-file-name' example-file-name
результат в:
mv: invalid option -- 'e'
Я пытаюсь переименовать файл с дефисом в начале его имени, и оба это:
mv -example-file-name example-file-name
и это:
mv '-example-file-name' example-file-name
результат в:
mv: invalid option -- 'e'
Большинство команд GNU/Linux позволяют --
чтобы указать конец опций , так что последующее -
приставку слово не рассматривается в качестве опции.
mv -- -example-file-name example-file-name
Небольшой тест
$ touch -- -example
$ ls -l -- *ample
-rw-r--r-- 1 rgb rgb 0 Nov 25 09:57 -example
$ mv -- -example example
$
Ответ RedGrittyBrick очень хороший. Другой вариант:
mv ./-example-file-name example-file-name
Небольшой тест:
$ touch ./-example
$ ls -l ./*ample
-rw-r--r-- 1 me me 0 Nov 25 16:02 ./-example
$ mv ./-example example
$ ls -l ./*ample
-rw-r--r-- 1 me me 0 Nov 25 16:02 ./example
Этот трюк работает для меня во времена отчаяния. YMMV
rename \- '' *
Вы должны избежать дефиса для переименования, чтобы распознать его. Почему переименование не учитывает одинарные кавычки или предлагает какое-либо переопределение, мне не понятно.
Это единственный метод, который я видел, который надежно обрабатывает ведущий дефис, используя переименование. Я согласен с другими постами об использовании mv, но если вы не можете использовать mv по какой-либо причине, это работает.
Вы можете использовать это:
rename -- "s/\-//g" *
что он может переименовать весь файл :), если ваше имя файла:
-ng--sh-ay-01[------------]-FLV
после запуска кода ваше имя файла становится:
ngshay01[]FLV