아래 블로그의 내용을 토대로 사용하면 된다..
방법 : 하위 전체 폴더에서 해당 파일을 찾아 수정.
이제 하위 폴더에서 java 파일에 기록된 @Override를 공백으로처리하고 싶을때는 이렇게 하면 된다.
find . -name "*.java" -exec perl -pi -e 's/\@Override/ /g' {} \;
특수문자 앞에는 '\'를 입력함에 주의하자.
추가사항!!
한가지 더!!
아 또 한가지 더
================================================================
만약 특정 디렉토리 이하에서 network 라는 문자열을 포함한 화일을 찾고싶다면.. 해당 디렉토리에서 모든 화일을 읽어 찾아보아야 하나.. 다음과 같이 find 와 grep 를 파이프로 연결하여 사용하면 쉽게 찾을 수있다.
find /etc/ -type f -exec grep 'network' {} /dev/null \;
위와 같이 명령어를 타입하면 /etc/ 디렉토리 이하에서 network 라는 문자열을 포함한 모든 화일명과 위치를 listing 해 준다.
그리고 단순히 특정 단어를 포함한 화일명을 찾고 싶으면 locste 라는 것을 쓰면 된다.
즉, locate ftp 를 하면 ftp 라는 화일명이 포함된 화일들을 listing 해 준다.
find ./ -name "*.zone" -exec perl -pi -e 's/\$TTL\t10800/\$\TTL\t12800/g' {} \;
-> 현재디렉토리 아래에 zone으로 끝나는 파일들 중에서 $TTL 10800 이라는 문자열을 $TTL 12800
으로 치환 하겟다! ㅋ
특수문자는 앞에 역슬래쉬를 붙여준다.
정규표현식 졸래복잡해!
find /home/ -type f -exec grep 'eval(base64_decode' {} /dev/null \;
-----------------------------------------------------------------------------------
vim 이나 emacs사용자 분들의 경우 ctags 와 같은 플러긴을 사용하여 함수의 선언 및 사용처를 일일히 다 파악할 수 있습니다만,
ctags를 사용할 수 없는 타 플랫폼의 경우 쉘에서의 명령으로 특정 문자열이 들어있는 파일을 찾아야 할 것입니다.
웹에서의 검색 결과로는 참으로 다양한 결과물들이 쏟아져 나오는데 그나마 그 중에서 제일 간단한 방법으로는 아래와 같습니다.
find (find_root) -name "*" | xargs grep ANY_STRING;
사용 예시로는 ...
find /usr1/firefox/src -name "*.h" | xargs grep foo
/usr1/firefox/src 라는 디렉토리로부터 모든 C언어 헤더파일을 검색하는데 이 파일에는 foo라는 문자열이 있어야 합니다.
이렇게 되면 /usr1/firefox/src 이하 foo가 들어간 모든 C언어 헤더 파일을 검색할 수 있습니다.
문제는 여기서 공백이 포함된 파일명은 검색할 수 없습니다. 그래서 공백을 포함하기 위해
find (find_root) -type f -print0 | xargs -0 grep ANY_STRING;
을 사용하시면 됩니다. 만약 현재 디렉토리를 기준으로 한다면 굳이 pwd 명령을 쳐서 나온 경로를 치지 않고도
"그냥 (find_root) 자리에 점 하나 찍어 주면 된다" 라는 것 쯤은 누구나 다 알고 계시겠지요?
======================================================================
// header
find . -name "*.h" -exec perl -pi -e
's/IDescriptor\.h/Descriptor\.h/g' {} \;
find . -name "*.h" -exec perl
-pi -e 's/snowdrop\_mpeg2ts\ \*\//en\_300\_468\ \*\/\n\}\ \/\*\ namespace\
snowdrop\ \*\/\n/g' {} \;
find . -name "*.h" -exec perl -pi -e
's/snowdrop\_mpeg2ts/snowdrop\n\{\nnamespace\ en\_300\_468/g' {} \;
find
. -name "*.h" -exec perl -pi -e
's/IDescriptor/snowdrop\:\:mpeg2ts\:\:Descriptor/g' {} \;
find . -name
"*.h" -exec perl -pi -e 's/Descriptor\(\)/Descriptor\(int\ tag\,\ u\_char\*\
data\,\ size\_t\ length\)\;\n/g' {} \;
find . -name "*.h" -exec perl -pi
-e 's/\{\}//g' {} \;
find . -name "*.h" -exec perl -pi -e 's/I//g' {}
\;
find . -name "*.h" -exec perl -pi -e 's/u\_long/u\_int/g' {}
\;
find . -name "*.h" | sed -e 'p' -e 's/I//g' | xargs -n 2 mv
//
source
find . -name "*.cpp" -exec perl -pi -e 's/snowdrop\_mpeg2ts\
\*\//en\_300\_468\ \*\/\n\}\ \/\*\ namespace\ snowdrop\ \*\/\n/g' {}
\;
find . -name "*.cpp" -exec perl -pi -e
's/snowdrop\_mpeg2ts/snowdrop\n\{\nnamespace\ en\_300\_468/g' {} \;
find
. -name "*.cpp" -exec perl -pi -e 's/\<\ length\)/\<\ length\(\)/g' {}
\;
find . -name "*.cpp" -exec perl -pi -e 's/\&\(\(u\_char\*\)\
data\)\[0\]\,\ length/data\(\)\,\ length\(\)/g' {} \;
find . -name
"*.cpp" -exec perl -pi -e 's/int\ tag\,\ int\ length/int\ tag\,\ u\_char\*\
data\,\ size\_t\ length/g' {} \;
find . -name "*.cpp" -exec perl -pi -e
's/a\(/ar\(/g' {} \;
find . -name "*.cpp" -exec perl -pi -e
's/a\./ar\./g' {} \;
find . -name "*.cpp" -exec perl -pi -e
's/datar/data/g' {} \;
find . -name "*.cpp" -exec perl -pi -e 's/void\*\
data\,\ size\_t\ length//g' {} \;
find . -name "*.cpp" -exec perl -pi -e
's/data\ \&\&\ \(//g' {} \;
find . -name "*.cpp" -exec perl -pi
-e 's/\:\ mDescriptor\(tag\,\ length\)/\:\ Descriptor\(tag\,\ \"\"\,\ data\,\
length\)/g' {} \;
find . -name "*.cpp" -exec perl -pi -e
's/\"Log\.h\"/\<stdio\.h\>/g' {} \;
'Linux' 카테고리의 다른 글
sqlite3 mips compile (0) | 2012.12.07 |
---|---|
E513 write error conversion failed (make 'fenc' empty to override) (0) | 2012.02.06 |
fedora에서 tftp 설정 (0) | 2010.10.11 |
VIM 설정 (0) | 2010.06.18 |
svn에서 체크아웃 할 때 암호 입력과 관련된 에러 발생시 (3) | 2010.06.18 |