在父文件夹中,我里面有多个文件夹。在每个文件夹中我都有文本文件“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