一 相关背景
在文件夹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文件。无论文件数量有多大,这个命令都可以处理,并避免参数列表过长的错误。