无法重命名以连字符开头的文件

无法重命名以连字符开头的文件

我正在尝试重命名一个文件,其名称开头带有连字符,并且同时包含以下内容:

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

和这个:

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

导致:

mv: invalid option -- 'e'

答案1

大多数 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
$

答案2

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

答案3

在绝望的时候,这个技巧对我很有用。YMMV

rename \- '' *

您必须转义连字符才能识别重命名。为什么重命名不尊重单引号或提供某种覆盖,这让我无法理解。

这是我见过的唯一一种使用 rename 可靠地处理前导连字符的方法。我同意其他关于使用 mv 的帖子,但如果您出于某种原因不能使用 mv,这种方法是可行的。

答案4

你可以使用这个:

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

它可以重命名所有文件:)如果您的文件名:

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

运行代码后,您的文件名变为:

ngshay01[]FLV

相关内容