压缩多个使用不同名称的文件

压缩多个使用不同名称的文件

例如:我有 100 个文件,每个文件的名称如下:g1001_1_405901_828719213.arc g1001_1_405902_828719213.arc g1001_1_405902_828719213.arc

最多 405999

我想将每个文件的名称更改为 g1001_1_405901_405901.tar.gz,制作一个 tar.gz 文件

你能用你的新名字一次性完成所有事情吗?

答案1

我不确定我是否理解了这个问题...

您是否尝试将具有相似名称的文件合并为一个 tar.gz 文件?

例如,在您的问题中,您提到“g1001_1_405901_828719213.arc g1001_1_405902_828719213.arc g1001_1_405902_828719213.arc”,并且它们上升到“405999”。

如果这意味着您有很多以 g1001_1_405901 开头的文件,并且名称的最后一部分(“_828719213.arc”)有所不同,那么您应该能够使用通配符来匹配名称,直到它们偏离的点。

因此,例如要打包所有以 g1001_1_405901 开头的文件,您可以使用以下命令:

tar -czvf g1001_1_405901.tar.gz ./g1001_1_405901_*.arc

如果这不是您的问题,而您只是想压缩目录中与模式匹配的文件,那么您可以使用以下命令:

gzip g1001_1_405901.*.arc

您的问题不太清楚。如果这些都不是您想要的,也许您可​​以编辑您的问题并提供更多详细信息。

答案2

IIUC,您可以使用 Perl 实现该rename程序(还有另一个程序称为,rename它是包的一部分util-linux )。示例 - 首先让我们重新创建您在问题中提供的文件列表:

$ touch g1001_1_405901_828719213.arc g1001_1_405902_828719213.arc
$ ls -Al
total 0
-rw-r--r-- 1 ja users 0 Sep 11 21:30 g1001_1_405901_828719213.arc
-rw-r--r-- 1 ja users 0 Sep 11 21:30 g1001_1_405902_828719213.arc

再次运行perl-rename并列出文件:

$ perl-rename 's,_[0-9]+.arc,.tar.gz,;s,_([0-9]+)\.tar.gz,_\1_\1.tar.gz,'  *
$ ls -Al
total 0
-rw-r--r-- 1 ja users 0 Sep 11 21:30 g1001_1_405901_405901.tar.gz
-rw-r--r-- 1 ja users 0 Sep 11 21:30 g1001_1_405902_405902.tar.gz

相关内容