Linux命令行Zip与正则表达式

时间:2012-05-17 10:51:04

标签: regex linux command-line zip

我有成千上万的jpg文件,都叫做1.jpg,2.jpg,3.jpg等等。我需要压缩它们的一系列,我认为我可以用正则表达式做到这一点,但到目前为止还没有任何运气。

这是命令

 zip images.zip '[66895-105515]'.jpg

有没有人有任何想法?

3 个答案:

答案 0 :(得分:4)

我非常确定无法将这样的数字范围与正则表达式(数字范围,是,但不是整个多位数字)相匹配,因为正则表达式适用于字符级别。但是,您可以使用" seq"命令生成文件列表并使用" xargs"将它们传递给" zip":

seq --format %g.jpg 66895 105515 | xargs zip images.zip

我在Linux下用一堆虚拟文件测试了该命令,它运行正常。

答案 1 :(得分:3)

与ls和bash范围({m..n})运算符一起使用,如下所示:

ls {66895..105515}".jpg" 2>/dev/null | zip jpegs -@

答案 2 :(得分:0)

你需要管道一些东西 - 列出文件,按正则表达式过滤,压缩每个列出的文件。

ls | grep [66895-10551] | xargs zip images.zip

编辑:糟糕,没有使用多位数进行测试。正如denisw所提到的,这种方法不起作用。