如何在树中列出所有文件以及触摸时间戳,并以bash格式写入CSV

时间:2019-05-19 02:16:29

标签: bash shell csv unix fs

我在一棵树上有数百万个文件。我将所有文件(不是目录)的完整路径(连同上次触摸的时间戳)从bash写入CSV文件的完整路径。我本来打算开始在Node.js中编写脚本,但这有点棘手,所以我想看看是否有一种方法可以利用bash中的管道传输/流传输来在短短的几行中完成此操作。

find dir -type f \
  -name '*.html' \
  -o -name '*.jpg' \
  -o -name '*.json' \
  -o -name '.png' \
  -o -name '.gif' | \
  get timestamp | \
  write csv rows...

输出如下:

dir/some/file,<timestamp>
dir/some/file2,<timestamp>
...

是绝对路径还是相对路径都没关系。

2 个答案:

答案 0 :(得分:2)

如果您有支持它的find,只需使用find dir ... -printf '%p,%a\n'

如果没有,请尝试:

find dir ... -exec stat --format='%n,%x' {} +

我不知道您所说的“上次触及的时间戳”是什么意思,也许您想要使用mtime,但是上述每个给定时间。您可以使用%t和%y获得mtime。检查文档。

答案 1 :(得分:0)

find . -type f -name '*.html' -o -name '*.jpg' -o -name '*.json' -o -name '*.png' -o -name '*.gif' | xargs -I{} ls -l {} | awk '{OFS=","}{print $9 , $6" "$7" "$8 }' > output.csv“。”找到当前目录后,您可以将其替换为目录路径