find
find
명령어는 리눅스 파일 시스템 내 각종 파일 디렉토리를 검색하는 명령어 이다.
기본적인 검색
현재 디렉토리 내 html
확장자를 가지고 있는 모든 파일을 찾아 경로를 출력해 준다.
# find ./ -name "*.html"
현재 디렉토리 내 디렉토리
만 출력
# find ./ -type d
응용
find
명령어로 특정 경로내 특정 문자열을 포함하고 있는 파일 리스트 출력하기
사용법
find [찾고자 하는 경로] -name "검색할 파일명" -exec grep -l "찾을 문자열" {} \;
사용예 : /home
경로 아래 localhost
문자열을 포함하는 .php 파일 리스트 출력
# find /home -name "*.php" -exec grep -l "localhost" {} \;
find
명령어와 perl
을 이용해 특정 경로내 파일들 중 특정 문자열을 포함하고 있는 파일을 검색해 검색된 문자열 치환
사용법
find [찾고자 하는 경로] -name "검색할 파일명" -exec grep -l "찾을 문자열" {} \; | xargs perl -pi -e 's/치환하려는 문자열/치환할 문자열/g'
사용예 : /home 경로 아래 “localhost” 문자열을 포함하는 .php 파일을 찾아 “localhost”문자열을 “127.0.0.1”로 치환
# find /home -name "*.php" -exec grep -l "localhost" {} \; | xargs perl -pi -e 's/localhost/127.0.0.1/g'
find
명령어로 특정 문자열을 포함하는 파일을 찾아서 복사
사용법
find [찾고자 하는 경로] -name "검색할 파일명" -exec grep -l "찾을 문자열" {} \; | awk '{print "cp -Rvf "$1" 복사할디렉토리"}' | sh
사용예 : /home
경로 아래 “localhost” 문자열을 포함하는 .php
파일을 찾아 /backup/
디렉토리로 복사
# find /home -name "*.php" -exec grep -l "localhost" {} \; | awk '{print "cp -Rvf "$1" /backup/"}' | sh