无法重命名名称上带有“[]”的文件?

arv*_*vil 5 debian rename

我一直在尝试在我的 debian 中使用重命名功能,我在 unix.stackexchange 上搜索过,但似乎解决方案在我的文件包含的场景中不一样 []

[800p]-[WOLU-H]-test1.mkv
[800p]-[WOLU-H]-test2.mkv
Run Code Online (Sandbox Code Playgroud)

所需的输出只是

[WOLU-H]-test1.mkv
[WOLU-H]-test2.mkv
Run Code Online (Sandbox Code Playgroud)

我试过

rename [800p]-[WOLU-H] [WOLU-H] [800p]-*

但它一直在说:

Bareword found where operator expected at (eval 1) line 1, near "800p"
    (Missing operator before p?)
syntax error at (eval 1) line 1, near "800p"
Run Code Online (Sandbox Code Playgroud)

我试过其他如

rename 's/[800p]-[WOLU-H]/[WOLU-H]/' [800p]-*

但输出也失败

Invalid [] range "U-H" in regex; marked by <-- HERE in m/[800p]-[WOLU-H <-- HERE ]/ at (eval 1) line 1.
Run Code Online (Sandbox Code Playgroud)

有人可以用正确的过程启发我吗?谢谢!

更新

我试过这个:

rename 's/\[800p\]-\[WOLU-H\]/\[WOLU-H\]/' \[800p\]-*
Run Code Online (Sandbox Code Playgroud)

但错误:

Bareword found where operator expected at (eval 1) line 1, near "800p"
        (Missing operator before p?)
Backslash found where operator expected at (eval 1) line 1, near "p\"
Backslash found where operator expected at (eval 1) line 1, near "]\"
        (Missing operator before \?)
Backslash found where operator expected at (eval 1) line 1, near "]\"
        (Missing operator before \?)
syntax error at (eval 1) line 1, near "800p"
Unmatched right square bracket at (eval 1) line 1, at end of line
Unmatched right square bracket at (eval 1) line 1, at end of line
Run Code Online (Sandbox Code Playgroud)

我也试过这个:

rename "[800p]-[WOLU-H]" "[WOLU-H]" "[800p]-"*
Run Code Online (Sandbox Code Playgroud)

但是还是报错

Bareword found where operator expected at (eval 1) line 1, near "800p"
        (Missing operator before p?)
syntax error at (eval 1) line 1, near "800p"
Run Code Online (Sandbox Code Playgroud)

我认为-数字是乱七八糟的?

Flo*_*elf 6

[并且]bash和 正则表达式中具有特殊含义,因此您必须将它们转义为\[and \]。这样的事情应该工作:

rename 's/\[800p\]-\[WOLU-H\]/\[WOLU-H\]/' \[800p\]-*
Run Code Online (Sandbox Code Playgroud)

例子:

$ touch [800p]-[WOLU-H]-test1.mkv [800p]-[WOLU-H]-test2.mkv
$ ls
[800p]-[WOLU-H]-test1.mkv  [800p]-[WOLU-H]-test2.mkv
$ rename 's/\[800p\]-\[WOLU-H\]/\[WOLU-H\]/' \[800p\]-*
$ ls
[WOLU-H]-test1.mkv  [WOLU-H]-test2.mkv
Run Code Online (Sandbox Code Playgroud)

  • 这是真的,尽管错误是 perl 错误消息,但由于使用 [perl `rename` 命令](http://manpages.ubuntu.com/manpages/dapper/man1/prename.1.html)。 (2认同)