查找数值大于指定数字的文件
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
尽管我喜欢尽可能使用单个命令,但我想这可能就是您在这里需要的:
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=] }'
但我不确定从效率的角度来看它是否真的有所不同...
当我运行以下命令时,我得到一个文件列表
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
尽管我喜欢尽可能使用单个命令,但我想这可能就是您在这里需要的:
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=] }'
但我不确定从效率的角度来看它是否真的有所不同...