編集:私は最初にスタック交換とbashスクリプトを使用するのですみません。私の質問が反対表を受け取った理由は、質問があまりにも曖昧であるか、最初に何も試みなかったためです。後者を選択し、必要な形式で型を見つけましたが、それでもその周りに必要な構造を作成する方法がわかりません(たとえば、「MRS_struct = GannetLoad({})」)。
ls -1 *GABA.dat | tr '\n' ' ' | sed -e "s/[^ ][^ ]*/'&'/g" >> filenames.m
ls -1 *water.dat | tr '\n' ' ' | sed -e "s/[^ ][^ ]*/'&'/g" >> filenames.m
ls -1 *.nii | tr '\n' ' ' | sed -e "s/[^ ][^ ]*/'&'/g" >> filenames.m
/編集する
3つのシリーズファイルでいっぱいのディレクトリがあります。
- ファイル名は(例えば、、、)です。
IDv#_GABA.dat
3001v1_GABA.dat
3002v1_GABA.dat
- ファイル名は(例えば、、、)です。
IDv#_water.dat
3001v1_water.dat
3002v1_water.dat
- ファイル名は(例えば、、)です。
ID_v#.nii
3001_v1.nii
3002_v1.nii
指定されたディレクトリには特定の名前のファイルのみが含まれています。V#(つまり、v1
ファイルのみまたはv2
ファイルのみ)。
次の形式のbashスクリプトを使用して、これらのファイル名からテキストファイルを作成したいと思います(上記のサンプルファイルを使用)。
MRS_struct = GannetLoad({'3001v1_GABA.dat' '3002v1_GABA.dat'},{'3001v1_water.dat' '3002v1_water.dat'});
MRS_struct = GannetFit(MRS_struct);
MRS_struct = GannetCoRegister(MRS_struct, {'3001_v1.nii' '3002_v1.nii});
MRS_struct = GannetSegment(MRS_struct);
答え1
コメントでワイルドカードが指摘したように、これは主にグローバル拡張に機能するいくつかの「印刷」ループに正しいテキストをラップすることです。唯一の違いは、次のスクリプトがリストの最後の要素の後に末尾のスペースを置くことです(Qサンプル出力で可能な一重引用符のスペルエラーに加えて)。下記のサンプル出力をご覧ください。
#!/bin/sh
printf "MRS_struct = GannetLoad({";
for f in *_GABA.dat
do
printf "'%s' " "$f"
done
printf "},{"
for f in *_water.dat
do
printf "'%s' " "$f"
done
printf "});\n"
printf "MRS_struct = GannetFit(MRS_struct);\n"
printf "MRS_struct = GannetCoRegister(MRS_struct, {"
for f in *.nii
do
printf "'%s' " "$f"
done
printf "});\n"
printf "MRS_struct = GannetSegment(MRS_struct);\n"
質問の出力例:
MRS_struct = GannetLoad({'3001v1_GABA.dat' '3002v1_GABA.dat'},{'3001v1_water.dat' '3002v1_water.dat'});
MRS_struct = GannetFit(MRS_struct);
MRS_struct = GannetCoRegister(MRS_struct, {'3001_v1.nii' '3002_v1.nii});
MRS_struct = GannetSegment(MRS_struct);
上記のスクリプトの出力:
MRS_struct = GannetLoad({'3001v1_GABA.dat' '3002v1_GABA.dat' },{'3001v1_water.dat' '3002v1_water.dat' });
MRS_struct = GannetFit(MRS_struct);
MRS_struct = GannetCoRegister(MRS_struct, {'3001_v1.nii' '3002_v1.nii' });
MRS_struct = GannetSegment(MRS_struct);