OS/Server > Unix/Linux공통

검색명령어 (파일/문자열/계정/사이즈) find/grep

#디렉토리#directory#link#링크#linux#centos#unix#string#search

-exec 명령어 옵션

옵션 내용
{} 결과물(파일등..)
\; -exec 명령어 맨끝에 와 명령어 끝을 나타냄

시간, 사이즈등 관련 옵션보기 mtime, atime, ctime etc  >>> 보러가기 클릭!! <<<

지정한 폴더이하 모든 폴더들에서 문자열 검색 (모든 폴더 & 문자열)

# find [검색대상폴더] -type f -print | xargs grep '[검색문자열]'

# find . -type f -print | xargs grep 'xxxx'

파일 사이즈를 적용한 검색 (k, M, G)

1) 특정 파일 사이즈 이상 검색 (  하위 디렉토리 전부 )

find . -size + 1000k -ls
find . -size +1000k -exec ls -lSh {} \;
find . -size +1000k -exec ls -lSh {} \; | awk '{ print $9 ": " $5}'

2) 현재 디렉토리에서만 파일 사이즈로 검색

find . -maxdepth 1 -type f -size +1000k -exec ls -lSh {} \;

 

 

지정한 디렉토리내 모든 파일에서 문자열 찾기 (파일속 내용을 검색한다.)

===[ 루트 폴더이하 모든 폴더에서 . ]====
# grep -Ril "검색문자열" /

==[ 현재 디렉토리 (하위 디렉토리 포함안함) 에서 대소구분해 모두 검색 ]==
# grep "검색문자열" *

 
옵션 내용
-i 대소문자를 구별하지 않하고 검색
-R 디렉토리 하위검색 Recursive
-l 검색되면 파일명을 출력 (일치한 부분은 제외하고 파일명만 출력)
/ 루트폴더,  현재 디렉토리의 경우 ( . )
-n 행번호를 출력한다.
-w 문자열 전체가 일치하는 경우

 

지정한 폴더이하 모든 폴더들에서 파일 검색 (모든 폴더 & 파일명)

# find [검색대상폴더] -type f -name '*[검색문자열]*'

# find . -type f -name '*xxx*'

 

지정한 파일에서 문자열 검색  (지정 파일 & 문자열)

# grep [Options] [검색문자열] [파일명]


# grep -in 'xxx' mytext.txt

 
옵션 기능
-i 대문자 소문자 구별 없이 검색
-l 패턴에 일치하는 행을 포함하는 파일명만 출력
-n 패터에 일치하는 파일의 행번호를 표시
-v 패턴에 일치하지 않는 행을 표시한다.
AND 조건으로 여러문자열

# cat input.txt | grep 'aaa' | grep 'bbb'

# grep -E 'aaa.*bbb' input.txt

※ 위와 같이 하면 aaa 다음에 bbb가 온것만 취득하므로, 반대 패턴도 볼려면 아래와 같이하면된다.
# grep -E 'aaa.*bbb|bbb.*aaa' input.txt

OR 조건으로 여러문자열

# grep -E 'aaa|bbb' input.txt

 

지정한 폴더이하 링크를 검색

# find -L . -xtype l
*** . 현재폴더내

소유한 파일 (계정에 의한 파일들을 검색)

특정 유저가 소유하거나 소유하지 않고 있는 파일 검색하기

$ find . -user emunhi -print

※  emunhi 사용자가 소유하고 있지 않는 파일을 검색한다.
$ find . \! -user emunhi -print

사용자나 그룹을 갖고 있지 않는 파일 검색하기

# find / -nouser
# find / -nogroup

그외 명령 샘플들

find /sourcedirectory -mtime +365 -exec mv "{}" /destination/directory/ \;

find /sourcedirectory -type f -mtime +365 -exec mv "{}" /destination/directory/ \;

find . -type f -mtime +3650 -ls | wc -l
find . -type f -mtime +7300 -ls | wc -l
find . -type f -mtime +10950 -ls | wc -l

ls | wc -l

find . -maxdepth 1 -type f -mtime +10950 -ls | wc -l
mkdir bk1980
find . -maxdepth 1 -type f -mtime +10950 -exec mv "{}" ../bk1980 \;

find . -type f -mtime +7300 -ls | wc -l
mkdir bk1990
find . -type f -mtime +7300 -exec mv "{}" ./bk1990 \;

find . -maxdepth 1 -type f -mtime +3650 -ls | wc -l
mkdir bk2000
find . -maxdepth 1 -type f -mtime +3650 -exec mv "{}" ./bk2000 \;

find . -maxdepth 1 -type f -mtime +1850 -ls | wc -l
find . -maxdepth 1 -type f -mtime +1850 -exec mv "{}" ./bk2015 \;

find . -maxdepth 1 -type f -mtime +1095 -ls | wc -l
find . -maxdepth 1 -type f -ctime +1095 -ls | wc -l

find . -maxdepth 1 -type f -mtime +1095 -exec mv "{}" ./bk2018 \;