在bash中,我想使用命令find
来查找在某个位置包含40到70之间的数字的文件,例如 c43_data.txt 。如何在find
?
我试过file . -name "c**_data.txt" | grep 4
,但这不是很好。
由于
答案 0 :(得分:6)
也许是这样的:
find . -regextype posix-egrep -regex "./c(([4-6][0-9])|70)_data.txt"
这匹配40 - 69和70。
您也可以使用iregex
选项进行不区分大小写的匹配。
答案 1 :(得分:1)
$ ls
c40_data.txt c42_data.txt c44_data.txt c70_data.txt c72_data.txt c74_data.txt
c41_data.txt c43_data.txt c45_data.txt c71_data.txt c73_data.txt c75_data.txt
$ find . -type f \( -name "c[4-6][0-9]_*txt" -o -name "c70_*txt" -o -name "c[1-2][3-4]_*.txt" \) -print
./c43_data.txt
./c41_data.txt
./c45_data.txt
./c70_data.txt
./c40_data.txt
./c44_data.txt
./c42_data.txt
答案 2 :(得分:0)
尝试类似:
find . -regextype posix-egrep -regex '.\*c([3-6][0-9]|70).\*'
通过适当的改进将其限制为您想要的文件
答案 3 :(得分:-1)
ls -R | grep -e 'c[4-7][0-9]_data.txt'
find
代替ls
。