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

UNIX系统下复制指定日期及之后含日期时间戳的文件至目标目录

按文件名中的日期筛选并复制文件

需求说明

需从UNIX系统的源目录中,复制文件名符合HUX_CRUX_ING_YYYYMMDDxxxxxxxxxxxx格式、且日期部分(YYYYMMDD)≥指定日期的所有文件到目标目录。以示例为例,指定日期为20221031时,需复制文件名包含20221031及之后日期的文件。


方法一:使用find命令(推荐,适用于大量文件)

通过find批量匹配文件,结合bash子脚本提取日期并筛选:

# 配置参数
SOURCE_DIR="/实际源目录路径"
TARGET_DIR="/实际目标目录路径"
TARGET_DATE="20221031"

# 执行查找与复制
find "$SOURCE_DIR" -maxdepth 1 -type f -name "HUX_CRUX_ING_*" -exec bash -c '
    for file do
        # 提取文件名中的8位日期部分
        file_date="${file##*_}"
        file_date="${file_date:0:8}"
        # 日期对比,符合条件则复制
        if [ "$file_date" -ge "$TARGET_DATE" ]; then
            cp "$file" "$TARGET_DIR"
        fi
    done
' bash {} +
  • -maxdepth 1:仅处理源目录下的文件,不递归子目录(需要递归可删除该参数)
  • -type f:仅匹配文件,排除目录
  • 若需保留文件权限、修改时间等属性,替换cp为cp -p

方法二:Bash循环(适用于少量文件,逻辑直观)

直接遍历源目录下的目标前缀文件,逐个筛选复制:

# 配置参数
SOURCE_DIR="/实际源目录路径"
TARGET_DIR="/实际目标目录路径"
TARGET_DATE="20221031"

# 进入源目录,遍历并筛选文件
cd "$SOURCE_DIR" || exit 1
for file in HUX_CRUX_ING_*; do
    if [ -f "$file" ]; then
        file_date="${file##*_}"
        file_date="${file_date:0:8}"
        if [ "$file_date" -ge "$TARGET_DATE" ]; then
            cp "$file" "$TARGET_DIR"
        fi
    fi
done
  • cd "$SOURCE_DIR" || exit 1:确保进入源目录失败时终止脚本,避免错误操作
  • 同样可替换cp为cp -p保留文件属性

注意事项

  1. 替换脚本中的/实际源目录路径和/实际目标目录路径为系统中的真实路径
  2. TARGET_DATE可修改为任意YYYYMMDD格式的日期
  3. 若文件名包含空格等特殊字符,脚本已通过双引号包裹变量确保兼容

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 21:00:54