我正在尝试删除文件名包含大于100的数字的所有文件,但是无法获取我编写的脚本。这是我到目前为止所写的内容:
#!/bin/bash
files=$(ls $1)
regex='test__(\d+).txt'
for f in $files
do
if [[ $f =~ $regex ]]; then
filenum=${BASH_REMATCH[1]}
if [ $filenum > 100 ]; then
rm $f
fi
fi
done
通过在脚本周围放置各种echo
语句进行调试,我发现它永远不会超过匹配正则表达式。实际上,我根本无法在命令行上匹配数字字符串:ls | grep [0-9]
会将文件名与数字匹配,但ls | grep [0-9]+
根本不匹配!
我对bash如何处理正则表达式有所了解吗?或者我搞砸了程序中导致我问题的其他地方?
答案 0 :(得分:0)
不需要任何脚本:
rm *[2-9][0-9][0-9]* *[0-9][0-9][0-9][0-9]* *10[1-9]* *1[1-9][0-9]*