행복아울렛
[UNIX/Linux 프로그래밍팁] 현재 디렉토리의 파일 내용 한꺼번에 바꾸기! 본문
확장자가 .c .s .h .cpp .ch 파일을 현재디렉토리 및 하위 디렉토리에서 모두 다 찾아서 OldString을 NewString으
로 한꺼번에 바꿔주는
스크립트입니다. 아주 유용합니다!
사용법:
$ach oldstring newstring
#!/bin/sh
#파라메터 갯수 조사
if [ "$#" -ne 2 ]
then
echo "All Change Oldstring to Newstring recursively"
echo "usage:ach Oldstring Newstring"
exit
fi
if [ -f ./vim.scr ]
then
echo "vim.scr already exists!"
rm -rf ./vim.scr
echo "vim.scr removed!"
exit 1
else
touch ./vim.scr
echo ":%s,\<$1\>,$2,g">> vim.scr
echo ":wq">> vim.scr
find ./ \( -name '*.c' -o -name '*.h' -o -name '*.s' -o -name '*.ch' -o -nam
e '*.cpp' \) -print > allfiles
temp1=`cat allfiles`
for files in `echo $temp1`
do
grep -l "\<$1\>" $files /dev/null | sed 's/.*/vim & -s vim.scr/' >> tmpf
iles
done
if [ -s tmpfiles ]
then
sh tmpfiles
else
echo "ach:No file to chage"
fi
rm -rf ./vim.scr
rm -rf ./tmpfiles
rm -rf ./allfiles
fi