我正在将文件从一台机器复制到另一台机器。我只对超过N天的文件感兴趣,所以我使用find
创建了一个文件名列表,如下所示:
DAYS_OLD=7
FILEs=`find /some/path -mtime -$DAYS_OLD | xargs`
现在我想将文件压缩成一个档案:
ZIPFILE='myfiles.zip'.
我运行以下命令:
zip -r $ZIPFILE "${FILEs}"
我收到以下错误:
*检测到缓冲区溢出*:zip终止
如何将文件(在$ {FILEs}环境变量中)压缩到zip存档中?
单程:
find /some/path -mtime -$DAYS_OLD | xargs zip -r $SOMEDIR/$ZIPFILE
使用find /some/path -mtime "$DAYS_OLD" -exec zip -r "$ZIPFILE" {} +
处理任何有效的文件名,包括名称中带有换行符的文件名。
试试吧
zip $ZIPFILE -i@<(find /some/path -mtime -$DAYS_OLD)
-i
参数告诉zip从文件中读取列表。将使用该命令的内容动态模拟该文件。