我有数千个 jpg 文件,它们都称为 1.jpg、2.jpg、3.jpg 等。我需要压缩它们的范围,我想我可以用正则表达式来做到这一点,但到目前为止还没有任何运气。
这是命令
zip images.zip '[66895-105515]'.jpg
有没有人有任何想法?
我有数千个 jpg 文件,它们都称为 1.jpg、2.jpg、3.jpg 等。我需要压缩它们的范围,我想我可以用正则表达式来做到这一点,但到目前为止还没有任何运气。
这是命令
zip images.zip '[66895-105515]'.jpg
有没有人有任何想法?
我非常确定不可能将这样的数字范围与正则表达式匹配(数字范围,是的,但不是整个多位数字),因为正则表达式在字符级别上工作。但是,您可以使用“seq”命令生成文件列表并使用“xargs”将它们传递给“zip”:
seq --format %g.jpg 66895 105515 | xargs zip images.zip
我在 Linux 下用一堆虚拟文件测试了这个命令,它工作正常。
与 ls 和 bash range ( {m..n}
) 运算符一起使用,如下所示:
ls {66895..105515}".jpg" 2>/dev/null | zip jpegs -@
您需要管道一些东西 - 列出文件,按正则表达式过滤,压缩每个列出的文件。
ls | grep [66895-10551] | xargs zip images.zip
编辑:哎呀,没有用多位数字进行测试。正如denisw 提到的,这种方法行不通。