【发布时间】:2012-12-24 05:31:16
【问题描述】:
我只想批量重命名当前目录中的文件,并从文件名的末尾删除某些字符串。
示例:
foo-bar-(ab-4529111094).txt
foo-bar-foo-bar-(ab-189534).txt
foo-bar-foo-bar-bar-(ab-24937932201).txt
输出应如下所示:
foo-bar.txt
foo-bar-foo-bar.txt
foo-bar-foo-bar-bar.txt
我想删除每个文件名末尾的字符串-(ab-2492201)
知道数字的长度可能不同。
Perl 正则表达式优于模块,并且不使用任何实用程序,并且对于 bash oneliner 命令是高度优选的。
如何在 Linux 上的 Perl 和 Bash Shell 中实现这一点?有兴趣了解这两种解决方案。
【问题讨论】:
-
为什么不想使用任何 Perl 模块?
-
在我的主脚本中插入代码后使其在多台机器上可移植,因此并非每台机器都必须安装模块依赖项。
-
任何标准 Perl 安装都应该有很多 perl“核心”模块。其中一个是
File::Find,但您的问题似乎不需要。
标签: regex linux perl bash shell