问题:
我有一个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