如何从终端文件列表中删除某个数字之前或之后的某些字符?

如何从终端文件列表中删除某个数字之前或之后的某些字符?

假设有一个具有以下模式的文件列表:

ABC2011DEFG.txt

我应该使用什么命令来删除数字之前或之后的字符,同时保留文件扩展名?

请注意,冗余字符的数量不是固定的。

答案1

使用rename

rename -n 's/[^0-9]*//' *.txt # removes the first sequence of non-digits
rename -n 's/[^0-9]*\./\./' *.txt # removes the first sequence of non-digits followed by a dot
% rename -n 's/[^0-9]*//' *.txt
rename(ABC2011DEFG.txt, 2011DEFG.txt)
rename(HIJ2012KLMN.txt, 2012KLMN.txt)
rename(OPQ2013RSTU.txt, 2013RSTU.txt)
% rename -n 's/[^0-9]*\./\./' *.txt
rename(ABC2011DEFG.txt, ABC2011.txt)
rename(HIJ2012KLMN.txt, HIJ2012.txt)
rename(OPQ2013RSTU.txt, OPQ2013.txt)

如果文件要按预期重命名,请删除该-n选项。

相关内容