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

如何通过Shell脚本按后缀数字将唯一文件复制到对应目录

解决方案

要实现按数字后缀分组复制文件到对应目标目录,核心是提取每个文件名的数字后缀,将同后缀的文件归类到同一个目录,以下是修正后的Shell脚本及说明:

修正后的脚本

#!/bin/bash

# 目标目录前缀,最终生成的目录为 Testing_1、Testing_2、Testing_3 等
dest_prefix="/Users/myprofile/Testing_"

# 遍历当前目录下所有csv文件
for f in *.csv; do
    # 提取文件名末尾的数字后缀:先去掉.csv后缀,再截取最后连续的数字部分
    base_name="${f%.csv}"
    suffix="${base_name##*[^0-9]}"
    
    # 拼接完整的目标目录路径
    dest_dir="${dest_prefix}${suffix}"
    
    # 若目标目录不存在则创建(-p参数确保父目录也能被创建)
    mkdir -p "$dest_dir"
    
    # 将文件复制到对应目标目录
    cp "$f" "$dest_dir/"
done

脚本说明

  1. 提取数字后缀:
    • ${f%.csv} 移除文件名的.csv后缀,例如Test01.csv会变成Test01
    • ${base_name##*[^0-9]} 去掉base_name中最后一个非数字字符之前的所有内容,仅保留末尾连续的数字,例如Nontesting02会变成02
  2. 确保目录存在:mkdir -p命令能自动创建不存在的目录,避免复制时因目录缺失报错
  3. 分组复制:同数字后缀的文件会被复制到同一个目标目录下,完全匹配你的需求

原脚本问题分析

你之前的脚本中,count变量在每次循环时自增,导致每个文件被依次放到Testing_0、Testing_1、Testing_2...目录中,完全没有按数字后缀分组,这就是每个目录仅能复制一个文件的原因。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 05:30:42