命令行 - 从文件名中删除所有非数字字符

分享于 

1分钟阅读

ubuntu

  繁體

问题:

我有一个042dasd|.txt的文件,我想删除所有非数字字符,输出042.txt,我尝试使用正规表达式,但没找到正确的方式。


$ mv 042dasd|.txt # to 042.txt



多文件示例


mv *.txt # remove all numbers from file names




答案1:

替换/删除最后一个点之前的所有非数字。


$ rename -n 's/[^0-9](?![^.]*$)//g' *[0-9]*.txt




答案2:

如果系统中没有安装rename命令,或者你不想使用它,下面的bash脚本可以用作替代方法:


#!/bin/bash


for f in *.* ; do


 ext="${f##*.}"


 bfn="${f%.*}"


 nfn="${bfn//[^0-9]/}"


 echo mv "$f" "$nfn.$ext"


done




COM  文件  COMM  Comma  命令行  CHAR