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

Mac OSX终端:为300个CSV文件批量添加含文件名的列

给Mac下批量CSV文件添加文件名列的简单办法

嘿,刚接触终端完全不用慌!我给你个用Mac自带工具就能搞定的方案,不用装任何额外软件,步骤也很清晰:

第一步:先拿单个文件测试(推荐新手先做这步)

先找一个CSV文件试试水,确保命令符合你的需求。打开终端,切换到CSV文件所在的文件夹(用cd 你的文件夹路径,比如cd ~/Documents/csv_files),然后运行下面的命令:

awk -v fname="$(basename test.csv)" 'BEGIN{FS=OFS=","} {print $0, fname}' test.csv > modified_test.csv

我给你拆解下每个部分的意思:

  • awk:Mac自带的文本处理工具,专门干这种每行处理的活
  • -v fname="$(basename test.csv)":定义一个叫fname的变量,存的是去掉路径的纯文件名(比如test.csv,而不是/Users/xxx/test.csv)
  • BEGIN{FS=OFS=","}:告诉awk,输入和输出的分隔符都是逗号,这样加的列会和原内容用逗号分开,符合CSV格式
  • print $0, fname:$0代表当前行的全部内容,这里就是把每行内容后面加上文件名列
  • > modified_test.csv:把处理后的内容存到一个新文件里,不会覆盖原文件,很安全

运行完你可以打开modified_test.csv看看,是不是每行最后都多了一列文件名~

第二步:批量处理所有300个CSV文件

测试没问题后,就可以批量处理了!还是在CSV文件所在的文件夹里,运行下面的命令:

for file in *.csv; do
  awk -v fname="$(basename "$file")" 'BEGIN{FS=OFS=","} {print $0, fname}' "$file" > "modified_$file"
done

这个命令的作用是:

  • 遍历当前文件夹里所有.csv结尾的文件
  • 对每个文件执行和第一步一样的处理
  • 处理后的文件会以modified_原文件名.csv的名字保存,比如原文件是data1.csv,处理后就是modified_data1.csv

新手注意事项

  • 千万不要直接覆盖原文件!用上面的方法生成新文件,万一处理错了还能找回原文件
  • 如果你的CSV文件里有带逗号的引号内容(比如"张三,北京"),这个简单命令可能会出错,要是遇到这种情况可以告诉我,我再给你更精准的方案
  • 要是不知道怎么切换到文件夹路径,可以把文件夹拖到终端窗口里,终端会自动显示路径,再加上cd (注意cd后面有空格)就行

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 03:55:23