在bash

时间:2016-11-07 23:28:40

标签: bash

我正在尝试删除文件名包含大于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如何处理正则表达式有所了解吗?或者我搞砸了程序中导致我问题的其他地方?

1 个答案:

答案 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]*