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

如何递归归档文件夹中的.csv/.txt文件并支持运行时传参?

递归归档指定类型文件到目标目录的tar实现方案

一、核心需求实现

要递归归档源路径下所有.csv和.txt文件到指定归档目录,同时支持运行时传入路径参数,有两种常用实现方式:

方式1:结合find命令(灵活适配复杂过滤)

编写可执行脚本,支持传入源路径和目标归档文件路径:

#!/bin/bash
# 参数检查:必须传入源路径和目标归档路径两个参数
if [ $# -ne 2 ]; then
    echo "用法: $0 <源路径> <目标归档文件路径>"
    exit 1
fi

SOURCE_PATH="$1"
TARGET_ARCHIVE="$2"

# 递归查找指定类型文件并归档
find "$SOURCE_PATH" -type f \( -name "*.csv" -o -name "*.txt" \) | tar -zcvf "$TARGET_ARCHIVE" -T -

命令解释:

  • find "$SOURCE_PATH" -type f \( -name "*.csv" -o -name "*.txt" \):递归遍历源路径,仅筛选普通文件(-type f),匹配.csv或.txt后缀;
  • tar -zcvf "$TARGET_ARCHIVE" -T -:-T -表示从标准输入读取要归档的文件列表,-z启用gzip压缩,-c创建新归档,-v显示归档过程,-f指定归档文件路径。

使用方法:

  1. 将脚本保存为archive_files.sh,执行chmod +x archive_files.sh赋予执行权限;
  2. 运行时传入参数:
./archive_files.sh /Apps/agent/server/srcfile/interface/file /Apps/agent/server/backup/interface/file.tar.gz

方式2:直接使用tar内置参数(简洁高效)

无需脚本,通过tar的--include参数直接实现递归过滤,命令格式如下:

tar -zcvf <目标归档文件路径> --include="*.csv" --include="*.txt" -C <源路径> .

命令解释:

  • --include="*.csv" --include="*.txt":仅包含这两种后缀的文件,递归生效;
  • -C <源路径>:切换到源目录后再打包当前目录(.),避免归档中包含完整绝对路径;
  • 参数化运行示例:
tar -zcvf /Apps/agent/server/backup/interface/file.tar.gz --include="*.csv" --include="*.txt" -C /Apps/agent/server/srcfile/interface/file .

二、注意事项

  • 建议给目标归档文件添加.tar.gz后缀,便于识别压缩格式;
  • 如果文件名包含空格等特殊字符,方式1可修改为find "$SOURCE_PATH" -type f \( -name "*.csv" -o -name "*.txt" \) -print0 | tar -zcvf "$TARGET_ARCHIVE" -T - --null,避免解析错误;
  • 若不需要压缩,去掉-z参数即可生成未压缩的tar包。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 15:33:24