如何在环境变量中压缩非常长的文件列表:***检测到缓冲区溢出***:zip终止

问题描述 投票:-1回答:3

我正在将文件从一台机器复制到另一台机器。我只对超过N天的文件感兴趣,所以我使用find创建了一个文件名列表,如下所示:

DAYS_OLD=7
FILEs=`find /some/path -mtime -$DAYS_OLD | xargs`

现在我想将文件压缩成一个档案:

ZIPFILE='myfiles.zip'. 

我运行以下命令:

zip -r $ZIPFILE "${FILEs}"

我收到以下错误:

*检测到缓冲区溢出*:zip终止

如何将文件(在$ {FILEs}环境变量中)压缩到zip存档中?

linux bash zip zipfile
3个回答
1
投票

单程:

find /some/path -mtime -$DAYS_OLD | xargs zip -r $SOMEDIR/$ZIPFILE

0
投票

使用find /some/path -mtime "$DAYS_OLD" -exec zip -r "$ZIPFILE" {} +处理任何有效的文件名,包括名称中带有换行符的文件名。


0
投票

试试吧

zip $ZIPFILE -i@<(find /some/path -mtime -$DAYS_OLD)

-i参数告诉zip从文件中读取列表。将使用该命令的内容动态模拟该文件。

© www.soinside.com 2019 - 2024. All rights reserved.