我正在使用该实用程序rename来自的 GNU/Linux 发行版,util-linux我想充分利用它的正则(Perl 或 POSIX)表达式。
rename 's/^fgh/jkl/' fgh*util-linux版本中,与语法rename fgh jkl fgh*如果第一个正则表达式的使用似乎很明显,我无法轻松访问它。但是,我对第二个感到困惑:我找不到有关可能使用的任何相关文档或示例,在这种情况下,找不到要使用的正则表达式的格式。
让我们举一个简单的例子,一个包含以下内容的目录:
foo_a1.ext
foo_a32.ext
foo_c18.ext
foo_h12.ext
Run Code Online (Sandbox Code Playgroud)
我想使用类似这两行之一的语法:
rename "foo_[a-z]([0-9]{1,2}).ext" "foo_\1.ext" *
rename "foo_[:alpha:]([:digit:]{1,2}).ext" "foo_\1.ext" *
Run Code Online (Sandbox Code Playgroud)
预期输出为:
foo_1.ext
foo_32.ext
foo_18.ext
foo_12.ext
Run Code Online (Sandbox Code Playgroud)
这当然行不通!要么我遗漏了一些明显的东西,要么没有实现的方法可以在这个工具中使用实际的正则表达式。
(请注意,我知道在 shell 解释器中使用正则表达式重命名文件的其他可能性;这个问题针对该rename工具的特定版本。)
这是手册页:http : //linux.die.net/man/1/rename。这非常简单:
重命名从 到文件...
重命名将替换第一次出现的命名指定的文件从在他们的名字来。
我相信没有正则表达式,它只是简单的子字符串匹配。
| 归档时间: |
|
| 查看次数: |
4248 次 |
| 最近记录: |