0

我有一组文件夹:

$ ls -d _clip* 
_clip10.trim  _clip12.trim  _clip14.trim  _clip16.trim  _clip2.trim  _clip4.trim  _clip6.trim  _clip8.trim
_clip11.trim  _clip13.trim  _clip15.trim  _clip1.trim   _clip3.trim  _clip5.trim  _clip7.trim  _clip9.trim

我需要选择两批文件夹,一个从_clip1.trim_clip6.trim

$ ls -d _clip[1-6].trim 
_clip1.trim  _clip2.trim  _clip3.trim  _clip4.trim  _clip5.trim  _clip6.trim

和其他 from _clip7.trimto _clip16.trim,但是当我尝试ls -d _clip[7-16].trim仅列出列表时_clip6.trim

我需要了解如何在正则表达式中使用数字 interbals。谢谢你的时间!

4

2 回答 2

6

[...]是一个字符类。当您说[7-16]时,这意味着“从 7 到 1 的字符(无)和字符 6”。我会说使用两个表达式:_clip[7-9].trim _clip1[0-6].trim. 看起来您并没有在该范围内拥有所有这些,但如果您这样做了,您可以使用_clip{7..16}.trim.

此外,在命令行上,它们是 glob,而不是正则表达式。有一些差异 -*表示任何或没有,而不是前面的任何内容的 0+,与?(任何内容中的零或一个,而不是前面的表达式)相同。

于 2013-07-19T17:13:17.363 回答
0

如何使用参数生成器

$ echo _clip{1..6}.trim
_clip1.trim _clip2.trim _clip3.trim _clip4.trim _clip5.trim _clip6.trim
$ echo _clip{7..16}.trim
_clip7.trim _clip8.trim _clip9.trim _clip10.trim _clip11.trim _clip12.trim _clip13.trim _clip14.trim _clip15.trim _clip16.trim

这些不是正则表达式...bash 可以生成参数:

$ echo x{0..1}_{FOO,BAR}_{x,y}
x0_FOO_x x0_FOO_y x0_BAR_x x0_BAR_y x1_FOO_x x1_FOO_y x1_BAR_x x1_BAR_y
于 2013-07-19T17:34:57.107 回答