查找数值大于指定数字的文件

find file with numeric values greater than a specified number

当我运行以下命令时,我得到一个文件列表

find . -type f -name '*_duplicate_[0-9]*.txt'

./prefix_duplicate_001.txt 

./prefix_duplicate_002.txt 

./prefix_duplicate_003.txt 

./prefix_duplicate_004.txt 

./prefix_duplicate_005.txt

现在我只对编号大于或等于 003 的文件感兴趣。我该如何完成?

提前致谢。

00[3-9]|(([1-9]\d\d)|(\d[1-9]\d))

仅限数字部分

使用 find 中的 -regex 选项,您可以调整正则表达式以获取 3_duplicate_ 之后具有前导零的更高值的所有文件:

find . -regextype posix-extended -type f \
       -regex '.*_duplicate_0*([3-9]|[1-9][0-9])[0-9]*\.txt'

在 OSX 使用这个 find:

find -E . -type f -regex '.*_duplicate_0*([3-9]|[1-9][0-9])[0-9]*\.txt'

./prefix_duplicate_003.txt
./prefix_duplicate_004.txt
./prefix_duplicate_005.txt

使用这个模式

.*_duplicate_(?!00[1-2])\d{3}\.txt

Demo

尽管我喜欢尽可能使用单个命令,但我想这可能就是您在这里需要的:

find . -type f -name '*_duplicate_[0-9]*.mat' | awk -F '[_.]' ' > 3 { print [=10=] }'

有一些变化 - 例如,这个:

find . -type f -name "*.mat" | awk -F '[_.]' '[=11=] ~ /_duplicate_[0-9]*.mat/ &&  > 3 { print [=11=] }'

但我不确定从效率的角度来看它是否真的有所不同...