如何使用unix提取文件名并添加为列

如何使用unix提取文件名并添加为列,unix,append,filenames,Unix,Append,Filenames,我在一个目录中有一堆文件 file1.txt file2.txt file3.txt 每个文件都有相同的结构 i、 e 我想附加所有文件(不重复标题,但为文件名创建第三列,即 id, field, filename "a", 123, file1.txt "b", 234, file2.txt "c", 456, file3.txt 在unix中如何执行此操作? 我可以找出如何提取文件名 awk -v OFS=", " ' NR == 1 {print $0, "filename"

我在一个目录中有一堆文件

file1.txt
file2.txt
file3.txt
每个文件都有相同的结构 i、 e

我想附加所有文件(不重复标题,但为文件名创建第三列,即

id,  field, filename
"a", 123, file1.txt
"b", 234, file2.txt
"c", 456, file3.txt
在unix中如何执行此操作? 我可以找出如何提取文件名

awk -v OFS=", " '
    NR == 1 {print $0, "filename"}
    FNR == 1 {next}
    {print $0, FILENAME}
' file* 
您可能猜到,
FILENAME
变量包含正在处理的当前文件的名称。
FNR
变量包含当前文件的记录编号,
NR
包含已处理的记录总数。因此,
NR==1
将是第一个文件的第一行

文档化——尽管这是到GNU awk的链接,但这些变量适用于所有awk

awk -v OFS=", " '
    NR == 1 {print $0, "filename"}
    FNR == 1 {next}
    {print $0, FILENAME}
' file*