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

Des*_*ume 51 linux bash shell command-line

我正在尝试在文件名的开头使用连字符重命名文件,并且:

mv -example-file-name example-file-name
Run Code Online (Sandbox Code Playgroud)

和这个:

mv '-example-file-name' example-file-name
Run Code Online (Sandbox Code Playgroud)

导致:

mv: invalid option -- 'e'
Run Code Online (Sandbox Code Playgroud)

Red*_*ick 81

大多数 GNU/Linux 命令允许一个--选项来指示选项的结尾,以便后续的-前缀词不被视为选项。

  mv -- -example-file-name example-file-name
Run Code Online (Sandbox Code Playgroud)

一个小测试

$ touch -- -example
$ ls -l -- *ample
-rw-r--r-- 1 rgb rgb 0 Nov 25 09:57 -example
$ mv -- -example example
$
Run Code Online (Sandbox Code Playgroud)

  • 这也解决了 `rename` 的相同问题。(至少是像`rename [options] <expression> <replacement> <file>...` 那样工作的版本,无论哪个版本。) (2认同)

gni*_*urf 21

RedGrittyBrick 的回答非常好。另一种选择是:

mv ./-example-file-name example-file-name
Run Code Online (Sandbox Code Playgroud)

一个小测试:

$ 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
Run Code Online (Sandbox Code Playgroud)


归档时间:

查看次数:

21315 次

最近记录:

9 年,3 月 前