linux zip命令打包文件,数量过多时的解决方案bash: /usr/bin/zip: Argument list too long

一 相关背景

在文件夹a里面有20万个aac文件,以及20万txt文件,我想要打包其中的aac文件为zip使用命令zip aa.rar folder/*.aac,然后遇到了提示bash: /usr/bin/zip: Argument list too long · 原因是因为其中文件过多,超过了zip的处理范围

二、解决方案

find /path/to/folder -name "*.aac" -exec zip aac_files.zip {} +

当使用find命令结合zip命令打包文件时,可以避免参数列表过长的错误。让我逐步解释这个命令的不同部分:

find: 这是Linux中的一个实用程序,用于在指定路径下搜索文件和目录。

/path/to/folder: 这是您要搜索的文件夹的实际路径。请将其替换为包含AAC和TXT文件的文件夹路径。

-name "*.aac": 这是find命令的选项之一,用于指定要匹配的文件名模式。在这种情况下,我们使用*.aac来匹配所有以.aac为扩展名的文件。

-exec zip aac_files.zip {} +: 这是find命令的另一个选项,用于在找到匹配的文件时执行特定的命令。在这里,我们使用-exec选项将zip aac_files.zip {} +作为要执行的命令。

对于-exec zip aac_files.zip {} +这个命令:
zip: 这是用于创建ZIP文件的命令。
aac_files.zip: 这是要创建的ZIP文件的名称。您可以根据需要更改名称。
{}: 这是find命令传递给-exec选项的占位符,它表示找到的每个文件。
+: 这是-exec选项的终止符,表示将尽可能多的文件一起传递给zip命令,以避免参数列表过长的错误。
使用上述命令,find将搜索指定文件夹中以.aac为扩展名的文件,并将它们传递给zip命令来创建名为aac_files.zip的ZIP文件。无论文件数量有多大,这个命令都可以处理,并避免参数列表过长的错误。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值