递归地通过 * 替换目录名称

递归地通过 * 替换目录名称

需要通过 bash 获得帮助

[edu@linux]$ tree test
test
├── 1dir
│      └── text.txt
├── 2dir
│      └── text.txt
└── 3dir
       └── text.txt

3 directories, 3 files


[edu@linux]$ cat test/*/text.txt
testtext1
testtext2
testtext3

我如何在命令行中输出通过“*”屏蔽的目录名称,如下所示:

1dir testtext1
2dir testtext2
3dir testtext3

谢谢

答案1

awk

awk 'FNR == 1 {split(FILENAME, parts, "/")}
     {print parts[2], $0}' test/*/test.txt

也就是说,在每个文件的第一行,将文件名拆分到数组/parts

对于每一行,打印该数组的第二个元素以及完整记录 ( ),以(默认情况下为空格)$0分隔。OFS

相关内容