在连接嵌套结构中的文件时,将目录名附加到每一行

时间:2018-05-08 20:34:57

标签: bash shell unix awk scripting

我有一个看起来像这样的文件树

03
├── 01
│   ├── File 1.csv   
└── 02
    ├── File 2.csv
04
├── 01
│   ├── File 1.csv 
└── 02
    ├── File 2.csv
05
├── 01
│   ├── File 1.csv
└── 02
    ├── File 2.csv

我的目标是将文件夹名称用作日期......例如03/0103/02等等。

对于创建的每个日期,我想将其作为新列附加到每个相应的CSV中。

这是我迄今为止尝试过的事情。

for i in */*; do 
    na= echo "$i"; 
done | awk -F";" '{$(NF+1)=na OFS $(NF+1)}' */*/*.csv >> ../outer/output.csv

我尝试过使用awk,但我知道我遗漏了一些东西。

提前致谢。

2 个答案:

答案 0 :(得分:3)

您不需要for循环。 awk有一个包含当前文件名的FILENAME变量,您可以从中提取日期部分。

awk -F";" -v OFS=";" '{
    split(FILENAME, path, "/"); 
    $(NF+1) = path[1] "/" path[2]; 
    print
}' */*/*.csv >> ../outer/output.csv

答案 1 :(得分:-2)

$ awk 'FNR==1 {sub("/[^/]+$","", FILENAME)} 
              {print $0 ";" FILENAME}' */*/*.csv >> ../outer/output.csv