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

Linux下用Bash命令生成含文件名与绝对路径的CSV文件列表

生成包含文件名与绝对路径的CSV文件

问题场景

我有大量文件(约50000个)存储在/home/abc/def/目录下,执行ls /home/abc/def/可列出所有文件名,希望生成一个CSV文件,格式要求如下:

file1.txt,/home/abc/def/file1.txt
file2.txt,/home/abc/def/file2.txt
.........................
file50000.txt,/home/abc/def/file50000.txt

即第一列为文件名,第二列为对应文件的绝对路径。尝试了以下命令但无法得到预期结果:

find /home/abc/def/ -type f -exec ls -ld {} \; | awk '{ print $5, $9 }' > output.csv

原命令问题分析

  • ls -ld的输出中,$5是文件大小,并非文件名;$9仅能获取不含空格的文件名,若文件名包含空格,会被拆分为多个字段,导致截取不完整。
  • 输出用空格分隔字段,不符合CSV要求的逗号分隔格式。

解决方案

方法一:使用find内置格式化输出(推荐,效率最高)

find /home/abc/def/ -type f -printf "%f,%p\n" > output.csv
  • %f:输出文件的basename(不带路径的纯文件名)
  • %p:输出文件的完整绝对路径
  • 直接用逗号分隔两个字段,无需额外处理,适合大数量文件,且能兼容带空格的文件名。

方法二:Bash循环遍历

cd /home/abc/def/
for file in *; do
    [ -f "$file" ] && echo "$file,$(realpath "$file")" >> output.csv
done
  • 先进入目标目录,遍历所有条目
  • [ -f "$file" ]确保只处理普通文件
  • realpath "$file"获取文件的绝对路径,双引号包裹变量避免空格导致的错误

方法三:find结合awk处理

find /home/abc/def/ -type f | awk -F/ '{print $NF","$0}' > output.csv
  • find输出所有文件的绝对路径
  • awk以/为分隔符,$NF取最后一个字段(即文件名),$0为完整路径,用逗号拼接输出

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 13:48:19