首页 > 解决方案 > 从文件中替换多个前面的数字

问题描述

再会,

我有一堆需要批量重命名的文件,如下所示:

 01-filename1.txt    > filename1.txt
 02-filename2.txt    > filename2.txt
 32-filename3.txt    > filename3.txt
 322-filename4.txt   > filename4.txt
 31112-filename5.txt > filename5.txt

我遇到了一个使用 bash ${string#substring}字符串操作实现此目的 的示例,因此这几乎可以工作:

for i in `ls`; do mv $i ${i#[0-9]}; done

但是,这只会删除一个数字,并且添加正则表达式“+”似乎不起作用。有没有办法去除所有前面的数字字符?

谢谢!

标签: bashglob

解决方案


使用 Perl 的独立rename命令:

rename -n 's/.*?-//' *.txt

如果输出看起来不错,请删除-n.


请参阅:堆栈溢出正则表达式常见问题解答


推荐阅读