微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

将regex与util-linux中的rename版本一起使用

我正在使用GNU / Linux发行版,该实用程序的重命名来自util-linux,并且我想与其一起充分利用正则表达式(Perl或POSIX).

共有two versions of rename个:

>“ Perl”版本,语法重命名为“ s / ^ fgh / jkl /” fgh *
> util-linux版本,语法重命名为fgh jkl fgh *

如果在第一个中使用正则表达式似乎很明显,那么我就很难访问它.但是,我对第二个表达式感到困惑:我找不到任何有关正则表达式的可能用法和格式的相关文档或示例.

让我们举一个简单的例子,该目录包含:

foo_a1.ext
foo_a32.ext
foo_c18.ext
foo_h12.ext

我想使用以下两行之一的语法:

rename "foo_[a-z]([0-9]{1,2}).ext" "foo_\1.ext" *
rename "foo_[:alpha:]([:digit:]{1,2}).ext" "foo_\1.ext" *

其预期输出为:

foo_1.ext
foo_32.ext
foo_18.ext
foo_12.ext

当然这行不通!我缺少明显的东西,或者有
此工具没有使用实际正则表达式的实现方式.

(请注意,我知道在Shell解释器中使用正则表达式重命名文件的其他可能性;此问题针对重命名工具的特定版本.)

解决方法:

这是手册页:http://linux.die.net/man/1/rename.这非常简单:

rename from to file…

rename will rename the specified files by replacing the first
occurrence of from in their name by to.

我相信没有正则表达式,它只是简单的子字符串匹配.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐