2

我有数千个 jpg 文件,它们都称为 1.jpg、2.jpg、3.jpg 等。我需要压缩它们的范围,我想我可以用正则表达式来做到这一点,但到目前为止还没有任何运气。

这是命令

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

有没有人有任何想法?

4

3 回答 3

6

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

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

我在 Linux 下用一堆虚拟文件测试了这个命令,它工作正常。

于 2012-05-17T11:10:02.137 回答
5

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

ls {66895..105515}".jpg" 2>/dev/null | zip jpegs -@
于 2012-05-17T11:02:49.553 回答
2

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

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

编辑:哎呀,没有用多位数字进行测试。正如denisw 提到的,这种方法行不通。

于 2012-05-17T10:59:24.330 回答