행복아울렛

[UNIX/Linux 프로그래밍팁] 현재 디렉토리의 파일 내용 한꺼번에 바꾸기! 본문

Programming

[UNIX/Linux 프로그래밍팁] 현재 디렉토리의 파일 내용 한꺼번에 바꾸기!

붕탱구 2007. 2. 18. 11:50

확장자가 .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

Comments