当我运行以下命令时,我得到一个文件列表
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的文件感兴趣。我怎样才能完成这项工作?
提前谢谢。
答案 0 :(得分:2)
在-regex
中使用find
选项,您可以调整正则表达式,以便在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
答案 1 :(得分:0)
00[3-9]|(([1-9]\\d\\d)|(\\d[1-9]\\d))
仅适用于数字部分。
答案 2 :(得分:0)
答案 3 :(得分:0)
尽管我喜欢在可能的情况下使用单个命令,但我想也许这就是你需要的:
find . -type f -name '*_duplicate_[0-9]*.mat' | awk -F '[_.]' '$4 > 3 { print $0 }'
有各种变化 - 例如:
find . -type f -name "*.mat" | awk -F '[_.]' '$0 ~ /_duplicate_[0-9]*.mat/ && $4 > 3 { print $0 }'
但我不确定它从效率的角度来看确实有所不同......