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);

관련 정보