I have some files with numeric names: `2341a.po`, `4567211someword.po`, `0012.po`, etc. I would like to find a set of files based on the numeric range. such as `[126 - 363]`.

Normally I use regular expression with `find`. Any numeric range `[N, M]` can be composed with two regular expressions `larger than N` and `less than M`.

### The larger than N:

If `N = vxyz`, then I first do a match for all `value > V000, (V=v+1)` with `[V-9]\d{3,}`

Then match `vX00`, `X=x+1`, with `v[X-9]\d\d`

Then match `vxY0`, `Y=y+1`, with `vx[Y-9]\d`

And last `vxy[z-9]`

Example:

To match `number>=234`, I use:

```
`^(0*([3-9]\d{2,}|2[4-9]\d|23[4-9]))`

```

### The smaller than M:

Based on similar logic we will have:

```
^(0*(vxy[0-z]|vx[0-Y]\d|v[0-X]\d\d|[1-V]\d\d|\d{1,3}))[^0-9]

```

With `Y=y-1,X=x-1,V=v-1`

For example, the follow command will find any file between [253, 326]:

```
find . -maxdepth 1 -type f -regextype posix-extended -iregex '^\./0*([3-9][0-9]{2,}|2[6-9][0-9]{2,}|25[3-9]).*' -iregex '^\./0*(32[0-6]|3[0-1][0-9]|[0-2][0-9][0-9]|[0-9]{1,2})[^0-9].*'

```

However, this method is too annoying to handle long numbers. Is there any better and easier way to do this?