Bashを使用してファイル名からリッチテキストファイルを作成する

Bashを使用してファイル名からリッチテキストファイルを作成する

編集:私は最初にスタック交換と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つのシリーズファイルでいっぱいのディレクトリがあります。

  1. ファイル名は(例えば、、、)です。IDv#_GABA.dat3001v1_GABA.dat3002v1_GABA.dat
  2. ファイル名は(例えば、、、)です。IDv#_water.dat3001v1_water.dat3002v1_water.dat
  3. ファイル名は(例えば、、)です。ID_v#.nii3001_v1.nii3002_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);

関連情報