2009. 2. 15. 23:47 Unix
[UnixTip] 확장자(Suffix) 바꾸기..
유닉스엔 원칙적으로 확장자의 개념이 없다.
인간이 구분하기 위해 구분해 놓은 것에 불과하다.
편의상 구분해 놓은 구분자를 변경하는 방법에 관한 팁을 소개한다.
---------------------------------------------------------------------
확장자 바꾸기
여러 파일들의 확장자를 변경하고자 할 때 다음과 같은 방식을 이용할 수 없다.
% mv *.abc *.def
대신 다음의 쉘 스크립트로 원하는 작업을 할 수 있다.
--------- 시작 ---------
#!/bin/sh
for f in *.abc; do
mv $f `basename $f .abc`.def
done
--------- 끝 ---------
모든 .abc로 끝나는 파일을 찾아 $f를 파일명으로 바꿔가면서(for)
mv FILENAME `basename $f.abc`.def
명령을 실행한다.
`basename $f .abc` 명령은 파일명중에서 .abc를 제외한 값을 반환한다.
따라서 위의 mv 명령은 다음과 같은 명령으로 완성된다.(file은 .abc를 제외한 파일명)
mv file.abc file.def
done
for 루프를 마친다.
csh이나 tcsh에서는 다음과 같이 하여 위의 작업을 할 수 있다.
foreach f in ( *.abc )
mv $f `basename $f .abc`.def
end
--------- 원문 ---------
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
UNIX GURU UNIVERSE
UNIX HOT TIP
Unix Tip 2932 - February 15, 2009
http://www.ugu.com/sui/ugu/show?tip.today
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
CHANGE THE SUFFIX
If you want to change the suffix of
multiple files, you can't do:
% mv *.abc *.def
However the following shell script
can be used to do the required
opperation:
***
Change all *.abc file to *.def the
following shell script would work:
#!/bin/sh
for f in *.abc; do
mv $f `basename $f .abc`.def
done
How it works:
for f in *.abc; do
Set up a look for all files ending
in .abc, and each time around setup
$f as the filename
mv $f `basename $f.abc`.def
`basename $f .abc` takes the filename
in $f and removes any trailing occurences
of .abc, we then append .def to the result
and the resulting command becomes
"mv file.abc file.def"
done
Ends the "for" loop above.
Under "csh" or "tcsh" a similar thing could be done with:
foreach f in ( *.abc )
mv $f `basename $f .abc`.def
end