你可以使用这个简单的代码:
filename=zc_adsf_qwer132467_xcvasdfrqw
echo ${filename//[^0-9]/} # ==> 132467
Run Code Online (Sandbox Code Playgroud)
如果您只需删除除数字之外的任何内容,则可以使用
ls | sed -e s/[^0-9]//g
Run Code Online (Sandbox Code Playgroud)
获取每个文件名分组的所有数字(123test456.ext将变为123456),或
ls | egrep -o [0-9]+
Run Code Online (Sandbox Code Playgroud)
对于所有数字组(123test456.ext将出现123和456)
只是猛击:
shopt -s extglob
filename=zc_adsf_qwer132467_xcvasdfrqw
tmp=${filename##+([^0-9])}
nums=${tmp%%+([^0-9])}
echo $nums # ==> 132467
Run Code Online (Sandbox Code Playgroud)
或者,使用 bash 4
[[ "$filename" =~ [0-9]+ ]] && nums=${BASH_REMATCH[0]}
Run Code Online (Sandbox Code Playgroud)