繰り返しディレクトリ名を*に変更します。

繰り返しディレクトリ名を*に変更します。

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

おすすめ記事