You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何高效压缩data_开头子文件夹中匹配*test*.npy的Numpy文件?

高效压缩指定Numpy文件的方法

问题根源

你用的globstar递归通配符在文件数量较多时,bash需要先遍历所有目录生成匹配的文件名列表,这个过程会消耗大量内存和时间,导致整体速度变慢,甚至不如直接压缩所有文件。

优化方案

方案1:用find+tar组合(最稳妥高效)

find的递归查找效率比bash的globstar更高,尤其适合大量文件的场景,同时通过管道传递文件列表避免内存占用过高:

find data* -type f -name "*test*.npy" -print0 | tar -czvf data.tar.gz --null -T -
  • -print0和--null:处理文件名包含空格、特殊字符的情况,避免出错
  • -T -:告诉tar从标准输入读取要压缩的文件列表

方案2:降低压缩级别或换用更快的压缩算法

默认的gzip压缩级别是6,平衡压缩率和速度,如果追求速度,可以调低级别;或者换用zstd(大部分现代系统支持),它的压缩速度比gzip快数倍,压缩率也不逊色:

  • 调低gzip级别(最快的级别1):
find data* -type f -name "*test*.npy" -print0 | tar -cvf data.tar.gz --compress-program='gzip -1' --null -T -
  • 用zstd压缩:
find data* -type f -name "*test*.npy" -print0 | tar --zstd -cvf data.tar.zst --null -T -

方案3:提前生成文件列表再压缩

如果需要多次复用这个文件列表,可以先把匹配的文件路径写入临时文件,再让tar读取:

find data* -type f -name "*test*.npy" > file_list.txt
tar -czvf data.tar.gz -T file_list.txt
rm file_list.txt

这个方法适合需要反复操作的场景,避免重复查找文件。

内容的提问来源于stack exchange,提问作者Simon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 11:42:40