我有成千上万个jpg文件,它们都被称为1.jpg、2.jpg、3.jpg等等。我需要将其中一些文件压缩成一个zip文件,我曾尝试使用正则表达式来完成这一操作,但迄今为止并没有成功。
以下是命令:
以下是命令:
zip images.zip '[66895-105515]'.jpg
有人有什么想法吗?
zip images.zip '[66895-105515]'.jpg
有人有什么想法吗?
可以和ls及bash中的区间运算符({m..n}
)一起使用,如下所示:
ls {66895..105515}".jpg" 2>/dev/null | zip jpegs -@
{66895..105515}
。 - anubhava我非常确定使用正则表达式无法匹配这样的数字范围(可以匹配数字范围,但不能匹配整个多位数字),因为正则表达式是基于字符级别工作的。但是,您可以使用“seq”命令生成文件列表,并使用“xargs”将其传递给“zip”:
seq --format %g.jpg 66895 105515 | xargs zip images.zip
我在Linux下测试了一堆虚拟文件,命令运行良好。
seq
工具(在10.11上进行了检查,另一个问题的答案提到该命令至少在OS X 10.8.5中可用)。 - Denis Washingtonls | grep [66895-10551] | xargs zip images.zip
编辑:抱歉,没有测试多位数字。如denisw所提到的,这种方法不起作用。
ls | grep eazybi.* | xargs zip eazybi-logs.zip
。谢谢 - Akhil Jain
[ # 匹配以下任意一个字符:
6689 # 任意一个这些字符
5-1 # 或者ASCII字符'5'到字符'1'之间的任何字符
05515 # 或者任意一个这些字符
]
- Jarmex