[![ここに画像の説明を入力][1]][1]次のファイルセットがあります。
lh.aparc.DKTatlas40.stats
lh.BA.stats
lh.curv.stats
lh.wg.pct.stats
rh.aparc.DKTatlas40.stats
rh.BA.stats
rh.curv.stats
rh.wg.pct.stats
lh. aparc.a2009s.stats
lh.aparc.stats
lh.BA.thresh.stats
lh.entorhinal_exvivo.stats
rh.aparc.a2009s.stats
rh.aparc.stats
rh.BA.thresh.stats
rh.entorhinal_exvivo.stats
各「rh」ファイルを各「lh」ファイルと組み合わせたいです。たとえば、lh.aparc.DKTatlas40.stats + rh.aparc.DKTatlas40.stats = merge.aparc.DKTatlas40.statsを結合する必要があります。
どうすればいいですか?
答え1
for lh in lh*; do
cat "$lh" "rh${lh#lh}" >"merge${lh#lh}"
done
これにより、各lh
ファイルがそのファイルにrh
関連付けられ、関連付けられたバージョンが(ファイル名の内容がmerge
続く)名前で保存されます。lh
パラメータ拡張は、値の先頭から文字列を削除します${lh#lh}
(たとえば、ローキャスト)。lh
$lh
lh.BA.stats
.BA.stats
答え2
ファイルはペアでリンクされているため、1つを繰り返して別のファイルの名前を直感的に知ることができます。
for f in lh.*; do
cat "$f" "${f/lh/rh}" > "${f/lh/merge}"
done
上記のループは、merge.*.stats
各lh / rhペアに対して1つのファイルを生成します。
この構成は、${var/foo/bar}
変数の最初のインスタンスです。まず、ファイル名を直感的にペアで囲んでから、連結したマージ結果のファイル名を定義します。foo
var
bar