25

Я пытаюсь переименовать файл с дефисом в начале его имени, и оба это:

mv -example-file-name example-file-name

и это:

mv '-example-file-name' example-file-name

результат в:

mv: invalid option -- 'e'

4 ответа4

42

Большинство команд 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
$
13

Ответ 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
0

Этот трюк работает для меня во времена отчаяния. YMMV

rename \- '' *

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

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

0

Вы можете использовать это:

rename -- "s/\-//g" *

что он может переименовать весь файл :), если ваше имя файла:

-ng--sh-ay-01[------------]-FLV

после запуска кода ваше имя файла становится:

ngshay01[]FLV

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .