粘贴文本文件并将父目录名称添加为每列的标题

粘贴文本文件并将父目录名称添加为每列的标题

在父文件夹中,我里面有多个文件夹。在每个文件夹中我都有文本文件“text.txt”。所有文件夹中的文本文件都是相似的,每个文本文件包含 100 行和一列数字。例子

cat /folder1/text1.txt

1654
1684
535
35131
.
.

我想使用命令将所有这些文本文件合并为一个文件中的列paste。在父文件夹中我运行了命令

paste ./*/text*.text > all_text.txt  # the content for all_text.txt is as follow:

cat all_text.txt
1654        354531 ....
1684        224
535         2424 
35131       24
.
.
.

如何将文件夹名称添加为每个粘贴列的标题以获得以下输出

cat all_text.txt
folder#1   folder #2   .....
1654        354531
1684        224
535         2424 
35131       24
 .
 .
 .   

答案1

您可以set在每个数组元素上使用参数扩展来仅打印目录名称:

set -- */text.txt
{ printf '      %s' "${@%/*}" | cut -c2-;  paste -- "$@"; }
# this blank ^ is a literal tab

相关内容