동일한 파일 확장자를 가진 여러 파일 읽기 및 쓰기

동일한 파일 확장자를 가진 여러 파일 읽기 및 쓰기

10234.su, 10234.ph 및 10234.th라는 세 가지 파일 세트가 있습니다. 10234.su에서 일부 데이터를 추출하고 10234.ph 및 10234.th에 쓰는 데 사용할 수 있는 쉘 스크립트가 있지만 한 번에 하나의 파일에서만 작동할 수 있습니다. 파일(xxx.su)을 하나씩 자동으로 읽고 (xxx.ph 및 xxx.th)를 적절하게 쓸 수 있도록 수정해야 합니다. 세 파일 모두 항상 같은 이름을 갖습니다. 예 - 10234.su, 10238.su, 10242.su 등 이름이 다른 .su 파일이 많이 있는데 그 중 하나를 자동으로 읽고 싶습니다.

내 스크립트는 다음과 같습니다 -

rm hdrfile binary 

for i in *.su; do 
sugethw <"$i" output=geom key=cdp >hdrfile
a2b <hdrfile n1=994 >binary
echo "$i -> sugethw <"$i" output=geom key=cdp >hdrfile a2b <hdrfile n1=994 >binary"

for j in *.ph; do 
sushw <"$j" infile=binary key=cdp >test1.su
rm "$j"
mv test.su "$j"
echo "$j -> sushw <"$j" infile=binary key=cdp >test.su rm "$j" mv test.su "$j""

for k in *.th; do
sushw <"$k" infile=binary key=cdp >test2.su
rm "$k"
mv test.su "$k"
echo "$k -> sushw <"$k" infile=binary key=cdp >test.su rm "$k" mv test.su "$k""

rm hdrfile binary
done
done
done 

감사해요!

답변1

다음 bash 쉘 스크립트를 사용해 보십시오.

echo테스트되었으며 모든 파일에서 작동합니다. 내 줄과 줄을 제거하고 , cp및 로 실제 줄의 주석 처리를 제거해야 합니다.sugethwa2bsushw

mv를 사용하지 않는 이상 이동하기 전에 파일을 삭제할 필요는 없을 것 같습니다 mv -i.

#!/bin/bash

for filnam in *.su
do
 tmp=${filnam%%.su}
 i="$filnam"
 j="${tmp}.ph"  # guessing they need not be nested
 k="${tmp}.th"  # guessing they need not be nested

 echo "$tmp.hdr" > hdrfile  # replacing lines with commands unknown to me
 echo "$tmp.bin" > binary   # replacing lines with commands unknown to me
 #sugethw <"$i" output=geom key=cdp >hdrfile
 #a2b <hdrfile n1=994 >binary
 echo "$i -> sugethw <\"$i\" output=geom key=cdp >hdrfile a2b <hdrfile n1=994 >binary"

 cp binary test1.su  # replacing line with command unknown to me
 #sushw <"$j" infile=binary key=cdp >test1.su
 #rm "$j"
 mv test1.su "$j"
 echo "$j -> sushw <\"$j\" infile=binary key=cdp >test.su rm \"$j\" mv test.su \"$j\""

 cp binary test2.su  # replacing line with command unknown to me
 #sushw <"$k" infile=binary key=cdp >test2.su
 #rm "$k"
 mv test2.su "$k"
 echo "$k -> sushw <\"$k\" infile=binary key=cdp >test.su rm \"$k\" mv test.su \"$k\""
 echo "---"
done 

rm hdrfile binary

관련 정보