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

如何用Bash命令将目录中文件名与绝对路径写入CSV文件

我懂你现在的需求——要把文件夹里近100个CSV文件的文件名和对应的绝对路径,整理成一个新的CSV文件对吧?其实用Bash的几个简单命令就能搞定,我给你两个实用的方案,按需选就行:

方案1:基础for循环(适合新手理解)

这个方法逻辑清晰,容易上手,适合只处理当前文件夹下的CSV文件:

# 先清空输出文件(如果之前存在out.csv的话,避免旧内容干扰)
> out.csv
# 遍历当前目录下所有.csv后缀的文件
for file in *.csv; do
  # 把文件名和绝对路径用逗号分隔,追加写入out.csv
  echo "$file,$(realpath "$file")" >> out.csv
done

小提示:

  • 如果你的系统没有realpath命令(比如部分老版本的macOS),可以用readlink -f "$file"替代;或者用更兼容的写法:echo "$file,$(cd "$(dirname "$file")"; pwd)/$(basename "$file")"
  • 如果文件名里包含逗号(虽然CSV文件名很少这么做,但防患于未然),可以给字段加上双引号,保证CSV格式规范:echo "\"$file\",\"$(realpath "$file")\"" >> out.csv

方案2:用find命令(支持递归遍历子文件夹)

如果你的CSV文件不仅在当前文件夹,还散落在子目录里,用find命令更高效:

# 把/path/to/your/folder替换成你的目标文件夹的绝对路径
find /path/to/your/folder -type f -name "*.csv" -printf "%f,%p\n" > out.csv

解释:

  • -type f:只筛选文件(排除文件夹)
  • -name "*.csv":只匹配后缀为csv的文件
  • %f:输出文件名(不带路径),%p:输出文件的完整绝对路径,用逗号分隔后换行写入out.csv

macOS兼容说明:

如果是在macOS上,find的printf参数语法略有不同,你可以改用这个写法:

find /path/to/your/folder -type f -name "*.csv" -exec sh -c 'echo "$(basename "$1"),$1"' _ {} \; > out.csv

这样处理完,你就能得到一个包含所有目标CSV文件名和绝对路径的out.csv文件啦~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:06:03