bash,查找包含文件名号的文件

时间:2010-01-28 15:35:17

标签: bash find

在bash中,我想使用命令find来查找在某个位置包含40到70之间的数字的文件,例如 c43_data.txt 。如何在find

中实现此过滤器

我试过file . -name "c**_data.txt" | grep 4,但这不是很好。

由于

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