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
。
各行に対して、配列の2番目の要素とレコード全体()を(デフォルトで)スペースで区切って印刷します$0
。OFS