리눅스 특정 문자열 포함된 파일 찾기 + 라인넘버 및 내용까지 표시

특정 문자열 포함된 파일 찾기가 필요한 상황

오늘 냉장고 정리를 한 내용을 생활정보쪽에 포스팅좀 해보려고 사진을 왕창 올렸더니 php.ini와 nginx.conf의 설정을 변경하지 않아서 사이즈가 큰 사진이 업로드가 되지 않았다.

php의 파일 업로드 최대사이즈 설정이 기본 2M로 설정되어 있어서 해당 설정을 수정해야 하는데 설정 파일이 여러개 일 수도 있어서 찾기가 너무 귀찮은 것이었다. php.ini파일이 cli폴더에도 있고 fpm폴더에도 있고..

이럴때 요긴한 특정 문자열 포함된 파일 찾기 커멘드를 공유한다. 이 커멘드는 진짜 개발자라면 무조건 외워야함. 쉘에서 설정파일의 내용을 찾거나 방대한 로그파일을 뒤질때 등등 정말 요긴하다.

해결방법

find 검색대상디렉토리 -name 파일형식 -exec grep -Hn “찾을문자열” {} \;

아래 예제를 보면 /etc/php디렉토리 및 그 하위디렉토리에서 ini확장자를 가진 모든 파일중에 max_filesize라는 문자열이 들어있는 파일의 경로와 그 라인수 및 내용까지 표시하라는 뜻이다.

root@devhinekr:/etc/nginx# find /etc/php -name *.ini -exec grep -Hn "max_filesize" {} \;
/etc/php/7.4/cli/php.ini:846:upload_max_filesize = 64M
/etc/php/7.4/fpm/php.ini:846:upload_max_filesize = 64M
/etc/php/7.4/embed/php.ini:846:upload_max_filesize = 64M

해당 파일명은 물론 라인 넘버와 해당 라인의 내용까지 출력된다. 이런게 바로 그뤠잇이지!!!

참고로 파일 형식에 *.ini를 넣었을 때는 쌍따옴표가 없어도 됬는데 *.conf입력시 다음과 같은 오류가 발생한다.
find: possible unquoted pattern after predicate `-name’?

“*.conf”와 같이 쌍따옴표를 입력해주면 오류없이 검색된다. 왜 *.ini는 그냥 되고 *.conf는 안되는걸까? 혹시 이 글을 보시는 분 중에 아시는 분 계시면 코멘트 남겨주고 가주시면 감사드리겠습니다 (^^)(__)

참고사이트

생계형 특급 개발자이자 아들 하나 있는 평범한 아빠. 취미는 요리, 캠핑, 뮤직 페스티발 다니기 등이지만 이 블로그에는 주로 개발관련된 내용만 올릴 예정입니다. 워드프레스를 시작한지 얼마 되지않아 사이트가 허전하지만 좋은 내용으로 채우도록 노력하겠습니다. 자주 놀러오세요 ^^
Posts created 54

Leave a Reply

Your email address will not be published. Required fields are marked *

Related Posts

Begin typing your search term above and press enter to search. Press ESC to cancel.

Back To Top