찾기만 할 때 문법은 다음과 같다.
find 검색할 디렉토리 -name "*" | xargs grep 검색할 내용.
ex) find /home/xxxx/yyyy -name "*" | xargs grep ttf
** 2016.03.15
근데 위에 방법에 문제가 있는지.. 잘 안되는 것 같다. 그냥 grep 만 사용해도 된다.
grep -r "xxxx" 디렉토리경로
ex) grep -r "너구리" .
-r 은 하위 디렉토리까지 모두(Recursively) 검사하라는 뜻이다.
원문은 이 곳에.
바꾸기까지 하려면 응용이 필요하다.
예를 들어, 한 디렉토리 내에 모든 파일을 검색하고, 파일 내용에 있는 특정 문자열을 다른 문자열로 바꿔주고 싶다면 다음과 같이 한다.
먼저 바꾸고자하는 파일들이 있는 특정 디렉토리로 이동한다.
find . -type f -exec sed -i 's/찾는 문자열/바꿀 문자열/g' {} \;
예) find . -type f -exec sed -i 's/lucid/maverick/g' {} \;
만약 모든 파일이 아니고 특정 파일만 찾는 것이라면, 첫번째처럼 조건을 주면 된다.
예) find /etc/apt/sources.list.d -iname '*.list' -exec sed -i 's/lucid/maverick/g' {} \;
이렇게 되면, 각 파일에 포함되어 있던 lucid 문자열이 maverick 으로 모두 바뀐다.
이 부분은 이 곳 을 참고했다.
[출처] http://egloos.zum.com/nemonein/v/4686258
'리눅스 명령어' 카테고리의 다른 글
ldd - 공유 라이브러리 의존관계 확인 (0) | 2016.12.29 |
---|---|
특정 파일내 문자열 치환 2 (0) | 2016.10.13 |