Linux의 find 명령은 디렉토리 구조에서 파일을 검색하고 지정된 작업을 수행합니다. Linux의 find 명령은 꽤 많은 검색 조건을 제공하며 매우 강력합니다. find에는 강력한 기능이 있기 때문에 많은 옵션도 있으며 대부분은 시간을 들여 이해할 가치가 있습니다. 시스템에 NFS(네트워크 파일 시스템)가 포함되어 있더라도 해당 권한이 있는 한 find 명령은 파일 시스템에서도 유효합니다. 리소스를 많이 소모하는 find 명령을 실행할 때, 많은 사람들은 대규모 파일 시스템을 탐색하는 데 오랜 시간이 걸릴 수 있기 때문에 백그라운드에서 실행하는 경향이 있습니다(여기서는 30G 바이트 이상의 파일 시스템을 나타냅니다).
1. 명령 형식:
find pathname -options [-print -exec -ok ...]
2. 명령 기능:
은 파일 트리에서 파일을 검색하고 해당 처리를 수행하는 데 사용됩니다
3. 명령 매개변수:
pathname: find 명령으로 검색된 디렉터리 경로입니다. 예를 들어, 현재 디렉터리를 나타내려면 .을 사용하고 시스템 루트 디렉터리를 나타내려면 .
-print: find 명령은 일치하는 파일을 표준 출력으로 출력합니다.
-exec: find 명령은 일치하는 파일에서 이 매개변수에 의해 제공된 쉘 명령을 실행합니다. 해당 명령은 'command' { } ; 형식입니다. { }와; 사이의 공백에 주의하세요.
-ok: 각 명령을 실행하기 전에 사용자에게 실행 여부를 확인하는 프롬프트가 표시됩니다. .
4. 명령 옵션:
-name 파일 이름으로 파일을 검색합니다.
-perm 파일 권한에 따라 파일을 찾습니다. -user 소유자에 따라 파일을 검색합니다.
-group 파일이 속한 그룹에 따라 파일을 찾습니다.
-mtime -n +n 변경 시간에 따라 파일을 검색합니다. - n은 파일 변경 시간이 지금부터 n일 이내임을 의미하고, +n은 파일 변경 시간이 지금부터 n일 전임을 의미합니다. find 명령에는 -atime 및 -ctime 옵션도 있지만 -m time 옵션과 동일합니다.
-nogroup 파일이 속한 유효한 그룹이 없는 파일, 즉 파일이 속한 그룹이 /etc/groups에 존재하지 않는 파일을 찾습니다.
-nouser 유효한 소유자가 없는 파일을 검색합니다. 즉, 파일 소유자가 /etc/passwd에 존재하지 않습니다.
-newer file1 !file2 변경 시간이 file1보다 최신이지만 file2보다 오래된 파일을 찾습니다.
-type 다음과 같은 특정 유형의 파일을 찾습니다.
b - 장치 파일을 차단합니다.
d - 디렉토리.
c - 캐릭터 장치 파일.
p - 파이프 파일.
l - 심볼릭 링크 파일.
f - 일반 파일.
-size n: [c] 파일 길이가 n 블록인 파일을 찾습니다. c를 사용하면 파일 길이는 바이트 단위입니다. -깊이: 파일을 검색할 때 먼저 현재 디렉터리에서 파일을 검색한 다음 해당 하위 디렉터리에서 검색합니다.
-fstype: 특정 유형의 파일 시스템에 있는 파일을 찾습니다. 이러한 파일 시스템 유형은 일반적으로 구성 파일 /etc/fstab에서 찾을 수 있습니다. 이 구성 파일에는 이 시스템의 파일 시스템에 대한 정보가 포함되어 있습니다.
-mount: 파일 검색 시 파일 시스템 마운트 지점을 넘지 마세요.
-follow: find 명령이 심볼릭 링크 파일을 발견하면 링크가 가리키는 파일을 따릅니다.
-cpio: 일치하는 파일에 대해 cpio 명령을 사용하여 해당 파일을 테이프 장치에 백업합니다.
-atime n 마지막으로 액세스한 파일을 찾습니다. n*24시간 동안 시스템에서
-cmin n 시스템에서 지난 N분 동안 파일 상태가 변경된 파일을 찾습니다.
-ctime n 지난 n*24시간 동안 파일 상태가 변경된 파일을 찾습니다. 시스템에서
-mmin n 시스템에서 지난 N분 동안 파일 상태가 변경된 파일을 찾습니다. 변경된 파일 데이터가 있는 파일
-mtime n 지난 n*24시간 동안 변경된 파일 데이터가 있는 파일을 찾습니다. 시스템
find -atime -2
[root@peidachang ~]# find -atime -2 . ./logs/monitor ./.bashrc ./.bash_profile ./.bash_history
[root@localhost test]# find . -name "*.log" ./log_link.log ./log2014.log ./test4/log3-2.log ./test4/log3-3.log ./test4/log3-1.log ./log2013.log ./log2012.log ./log.log ./test5/log5-2.log ./test5/log5-3.log ./test5/log.log ./test5/log5-1.log ./test5/test3/log3-2.log ./test5/test3/log3-3.log ./test5/test3/log3-1.log ./test3/log3-2.log ./test3/log3-3.log ./test3/log3-1.log
[root@localhost test]# find /opt/soft/test/ -perm 777 /opt/soft/test/log_link.log /opt/soft/test/test4 /opt/soft/test/test5/test3 /opt/soft/test/test3
[root@localhost test]# find . -type f -name "*.log" ./log2014.log ./test4/log3-2.log ./test4/log3-3.log ./test4/log3-1.log ./log2013.log ./log2012.log ./log.log ./test5/log5-2.log ./test5/log5-3.log ./test5/log.log ./test5/log5-1.log ./test5/test3/log3-2.log ./test5/test3/log3-3.log ./test5/test3/log3-1.log ./test3/log3-2.log ./test3/log3-3.log ./test3/log3-1.log [root@localhost test]#
[root@localhost test]# find . -type d | sort . ./scf ./scf/bin ./scf/doc ./scf/lib ./scf/service ./scf/service/deploy ./scf/service/deploy/info ./scf/service/deploy/product ./test3 ./test4 ./test5 ./test5/test3 [root@localhost test]#
출력:
설명:[root@localhost test]# find . -size +1000c -print . ./test4 ./scf ./scf/lib ./scf/service ./scf/service/deploy ./scf/service/deploy/product ./scf/service/deploy/info ./scf/doc ./scf/bin ./log2012.log ./test5 ./test5/test3 ./test3 [root@localhost test]#
현재 디렉터리에서 1K보다 큰 파일 찾기
1. Linux에서 find의 일반적인 사용 예
·find path -option [ -print ] [ -exec -ok command ] {} ;
#-print 찾은 파일을 표준 출력으로 출력
#-exec command {} --- -- 찾은 파일에 대해 명령 작업을 실행합니다. {}와 사이에 공백이 있습니다.
#-ok는 -exec와 동일하지만 작업 전에 사용자에게 문의해야 합니다========== == ========================================= -name filename # 이름이 지정된 파일 찾기 filename
-perm #실행 권한으로 검색 ~ #파일 변경 시간에 따라 파일 검색, -n은 n일 이내, +n은 n일 전을 의미
-atime -n +n #검색 파일 접근 시간별 GIN: 0px">-perm #실행 권한별 검색
- 사용자 사용자 이름 #파일 소유자별 검색
-group groupname #그룹별 검색
-mtime -n +n #파일 검색 파일 변경 시간 기준으로 -n은 n일 이내, +n은 n일 이내를 의미합니다. 과거에는 -atime -n +N #파일을 찾기 위한 파일 접근 시간에 따라, -N은 N일 이내를 의미하고, +n Finger
-Ctime -n +N #파일생성시간에 따라 파일을 찾는데, -n은 n일 이내를 의미하고, +n은 n일 전을 의미한다. 메인 파일, 즉 파일의 소유자가 하는 일 /etc/passwd에 존재하지 않음
-newer f1 !f2 파일 찾기, -n은 n일 이내를 의미, +n은 n일 전을 의미
-ctime -n +n #파일을 찾기 위해 파일 생성, -N은 N일 이내,+n손가락 n일 전을 나타냅니다.
-Nogramp #유효한 소속 그룹이 없는 파일, 즉 해당 파일의 파일 그룹이 /etc/group에 존재하지 않는 파일을 찾습니다. > -NOUSER #🎜 🎜 🎜 🎜 🎜 즉, 파일의 소유자가/etc/passwd에 저장되어 있지 않습니다. -B/D/C/P/L/F #체크는 블록 장비, 디렉토리, 캐릭터 장비입니다. , 파이프라인, 심볼릭 링크, 일반 파일
-size n [c] #검사 길이는 n [또는 n 자입니다. 페스티벌의 파일
-fstype #은 F1보다 변경 시간을 확인하지만 이전 파일
-mount #파일이 스패닝 파일 시스템 마운트 지점
을 확인하지 않는 경우.-follow #심볼릭 링크 파일이 나타나면 링크가 가리키는 파일을 따라갑니다
-cpio # 디렉터리 무시== ===================== ============================= " [A-Z]*" -pri26nbsp # 일치하는 파일에 대해 cpio 명령을 사용하고 다시 되돌립니다.
-대문자로 시작하는 파일 정리
$find /etc -name "host*" -print # 호스트로 시작하는 파일 확인
$find -name "[a-z][ a-z][0--9][0 --9].txt" -print # 소문자 2개와 숫자 2개로 시작하는 txt 파일 확인
$find . -perm 755 -print
$find . -perm -007 -exec ls -l {} ; #모든 사용자가 읽고 쓰고 실행할 수 있는 파일을 확인합니다. -perm 777
$find -type d usr/include -name - exec grep AF_INEF6 {} ; grep은 하위 디렉터리를 재귀적으로 검색할 수 없으므로 find와 함께 사용할 수 있습니다. /usr/include의 모든 하위 디렉터리에 있는 .h 파일에서 문자열 AF_INEF6
$find를 찾습니다. -type l -print $find . -size +1000000c -print # 길이가 1Mb보다 큰 파일 검색
$ find .-Size 100C -PRINT # 길이가 100C인 파일 확인
$ Find. -Size +10 -PRINT # 10개(1 = 512바이트) 길이 확인 $ CD /
$ find etc home apps -length -print | cpio -ivcdC65536 -o /dev/rmt0
$find /etc -name "passwd*" -exec grep "cnscn" {} #cnscn 사용자가 있는지 확인
$ find . -name "yao*" | xargs 파일
$find . -name "yao*" | chmod o-w =============== ========================= ====== find -name april* 현재 디렉토리에서 april로 시작하는 파일 찾기
find - name april* fprint file 현재 디렉터리에서 april로 시작하는 파일을 찾아 결과를 file에 출력합니다.
find -name ap* -o -name may* ap로 시작하는 파일을 찾거나 may
find /mnt -name tom .txt -ftype vfat /mnt vfat file
에서 tom.txt라는 이름과 파일 시스템 유형을 찾습니다.find /mnt -name t.txt ! -ftype vfat /mnt에서 tom.txt라는 파일을 찾고 파일 시스템 유형이 vfat가 아닙니다.
find /tmp -name wa* -type l /tmp 파일에서 이름을 찾으세요. wa로 시작하고 심볼릭 링크 유형인
find /home -mtime -2 /home에서 지난 이틀 동안 변경된 파일 확인
find /home -atime -1 -atime -1 파일 확인 1일 이내에 액세스한 파일
find /home -mmin +60 /home에서 60분 전에 변경된 파일 찾기
find /home -amin +30 30분 전에 액세스한 파일 찾기
find /home -newer tmp.txt /home에서 업데이트 시간이 tmp.txt보다 최근인 파일 또는 디렉토리를 검색합니다.
find /home -anewer tmp.txt 디렉토리
find /home -used -2 목록 파일 또는 디렉토리가 수정된 후 2일 이내에 액세스한 파일 또는 디렉토리
find /home -user cnscn /home 디렉토리에서 사용자 cnscn에 속한 파일 또는 디렉토리 나열
find /home - uid +501 -uid 사용자 식별 코드가 501보다 큰 /home 디렉토리의 파일 또는 디렉토리 나열
find /home -group cnscn 그룹이 cnscn 디렉토리인 /home의 파일 또는 디렉토리 나열
/HOME -NOUSER 찾기 /Home, 로컬 사용자에 속하지 않는 파일 또는 디렉토리 나열
/Home -nogroup 찾기 파일 또는 디렉토리 나열 로컬 그룹에 속하지 않는 /home에서
find /home -name tmp.txt -maxlength 4 /home에 tmp.txt를 나열합니다. 검색의 최대 깊이는 3단계입니다.
find / home -name tmp.txt -minlength 3 레벨 2에서 검색
find /home -empty 크기가 0인 파일 또는 빈 디렉터리 찾기
find /home -size +512k 512k보다 큰 파일 확인
find /home - size -512k 512k보다 작은 파일 찾기
find /home -links +2 2보다 큰 하드 링크가 있는 파일 또는 디렉토리 찾기
find /home -perm 0700 권한이 700인 파일 또는 디렉토리 검색
find /tmp -name tmp.txt -exec cat {} ;
find /tmp -name tmp.txt -ok rm {} ; find / -amin -10 # 시스템에서 지난 10분 동안 액세스한 파일 찾기
find / -atime -2 # 지난 48시간 동안 액세스한 파일 찾기 in the system Files
find / -empty # 시스템에 비어 있는 파일이나 폴더 찾기
find / -group cat # 시스템에서 groupcat에 속한 파일 찾기
find / -mmin -5 # 찾기 in system 시스템에서 지난 5분 동안 수정된 파일
find / -mtime -1 # 시스템에서 지난 24시간 동안 수정된 파일 찾기 >find / -user fred # 다음에 속한 파일 찾기 시스템의 사용자 FRED
현재 디렉터리의 모든 일반 파일 확인
--- ----------- -------------------------- ----------- --- # find . -type f -exec ls -l {} ;
-rw-r--r-- 1 루트 루트 34928 2003-02-25 /conf/httpd.conf
-rw -r--r-- 1 루트 루트 12959 2003-02-25 ./conf/magic
-rw-r--r-- 1 루트 루트 180 2003- 02-25 ./conf.d/README
현재 디렉터리의 모든 일반 파일을 확인하고 -ex e c 옵션에서 ls -l 명령을 사용하여 나열합니다.
========== =========== ============================
/logs 디렉토리에서 변경 시간을 찾아 5일이 지난 파일을 삭제하세요.
$ 로그 찾기 -type f -mtime +5 -exec -ok rm {}
=============== =========== =====================
당일 수정된 파일 조회
[root@book class ]# find ./ -mtime -1 -type f -exec ls -l {} ;
================================== ===========
파일을 쿼리하고 표시할지 묻습니다
[root@book class]# find ./ -mtime -1 - type f -ok ls -l {} ;< ls ... ./classDB.inc.php > ? y
-rw-r--r-- 1 cnscn :22 ./classDB.inc.php
root@book class]# find ./ -mtime -1 -type f -ok ls -l {}
< ls ... ./classDB.n
[root@ 책 수업]# ============================================== ===
쿼리하고 처리를 위해 awk에 넘겨주세요
[root@book class]# who | awk '{print $1"t"$2}'
cnscn pts/0 ===== =============================================
아크 ---grep---sed [root@book class]# df -k | awk '{print $1}' | grep -v 'none' | s"//dev/ //g"
파일 시스템
sda2
sda1
[root@book class]# df -k | awk '{print $1}' | grep -v 'none'
파일 시스템
/dev/sda2
/dev/sda1
1) /tmp에서 모든 *.h를 찾고, 이 파일에서 "SYSCALL_VECTOR"를 검색하고, 마지막으로 "SYSCALL_VECTOR"가 포함된 모든 파일 이름을 인쇄합니다. A) find /tmp -name "*.h" | xargs -n50 grep SYSCALL_VECTOR
B) grep SYSCALL_VECTOR /tmp/*.h | cut -d':' -f1| uniq > 파일 이름
C) find /tmp -name "*.h" -exec grep "SYSCALL_VECTOR" {} ; -print
2)find / -name 파일명 -exec rm -rf {} ;
find / -name 파일명 -ok rm -rf {}
3) 예를 들어, 3M 파일보다 큰 파일:
find . -size +3000k -exec ls -ld {}
4) 찾기를 다른 위치로 복사
find *.c -exec cp '{}' /tmp ';' 특수 파일이 있는 경우 cpio를 사용하거나 다음 구문을 사용할 수 있습니다.
find dir -name filename -print | cpio -pdv newdir
6) 찾기 2004-11-30 16:36 :파일이 37에 변경되었습니다
# A=`find ./ -name "*php"` | ls -l --full-time $A 2>/dev/null | grep "2004-11-30 16 :36 :37
2. Linux에서의 find 명령 사용법
1. 기본 사용법:
find / -name 파일 이름 find ver1.d ver2.d -name '*. -print ver1.d, ver2.d *.c 파일을 찾아 인쇄합니다. -type d -print 현재 디렉터리부터 검색하고, 찾은 후 경로명을 인쇄합니다.
2. 검색하지 않고 검색합니다. 오류:
find / -name access_log 2 >/dev/null
3. 크기별 검색:
find / -size 1500c(크기가 1,500바이트인 파일 찾기, c는 단어 섹션을 의미함)
find / -size +1500c(1,500바이트보다 큰 파일 찾기, +는 더 큼을 의미)
find / -size +1500c(1,500바이트보다 작은 파일 찾기, -보다 작음을 의미)
4.
find / -amin n 지난 n 분
find / -atime n 지난 n 일
find / -cmin n 지난 n 분 상태 변경
find / -ctime n last n 일 후 상태 변경
5. 기타:
find / -빈 파일, 빈 폴더, 하위 디렉터리가 없는 폴더
find / -false 시스템에서 항상 잘못된 파일 찾기
find / -fstype type 존재하는 파일 찾기 ext2 유형과 같은 지정된 파일 시스템에서
find / -gid n 그룹 ID가 n인 파일
find / -group gname 그룹 이름이 gname
find / -length n인 파일에서 먼저 파일 내용 검색 특정 레벨에서 지정된 디렉토리
찾기 / -max깊이 레벨 특정 레벨 디렉토리에서 내림차순으로 검색
6. 논리
-and 조건 및 -or 조건 또는
문자열 찾기
찾기 -name '*.html' -exec grep 'mailto:'{}