我有成千上万的jpg文件,都叫做1.jpg,2.jpg,3.jpg等等。我需要压缩它们的一系列,我认为我可以用正则表达式做到这一点,但到目前为止还没有任何运气。
这是命令
zip images.zip '[66895-105515]'.jpg
有没有人有任何想法?
答案 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所提到的,这种方法不起作用。