find 명령어 이것만 제대로 사용할수 있다면 리눅스를 다루기에 날개를 다는거 같아요. find 는 파일과 디렉터리를 찾는 명령어이며 표현식들의 막강한 기능으로 타의 추종을 불허할 정도입니다.ㅋ
■ 기본 사용법
find 옵션 [Path...] [expression]
■ 옵션
-H 싱볼릭 링크를 따라가지 않지만 예외로 파라미터(arguments) 가 있으면 따라감. -L 싱볼릭 링크에 연결된 파일도 확인 -P 싱볼릭 링크를 따라가지 않는다. -D 디버깅 정보 츨력 -O 최적화 활성화 0~3단계 지정. 옵션은 거의 사용하지 않을거에요. 이런게 있구나 정도만 아시면 될거네요.
■ expression 표현식
표현식
설명
-name
검색을 문자열 지정지정하지 않으면 모든 파일이 대상입니다.
-size
파일 크기 지정
-type
파일 타입 지정
-atime
파일 접근 시간 access 지정
-ctime
파일 속성 시간 지정
-mtime
파일 변경 시간 지정
-amin
파일 접근 분 단위 지정
-cmin
파일 속성 분 단위 지정
-mmin
파일 변경 분 단위 지정
-exec
검색 결과로 지정된 명령어 실행
-print
검색 결과 출력
-perm
파일 권한 지정
더 많이 있는데요. 주로 사용하는 표현식입니다. 이정도면 충분하실거에여. 전체를 보시고 싶으시면 리눅스에서 man find 명령어로 확인할수 있습니다. 표현식 이름에서 유추하실수 있을거에요. 파일이나 디렉터리를 찾을때 상당히 디테일하고 유도리있게 찾을수 있습니다.
* 기본 사용법
find [Path...] [표현식]
▣ 현재 디렉터리에 txt 확장자 파일 찾기
현재 디렉터리는 . 으로 표시합니다.
find . -name "*.txt" ./str2.txt ./str.txt ./sub_fold/sub_str.txt
▣ 특정 디렉터리에 txt 확장자 파일 찾기
find /home -name "*.txt" /home/sidepower/test/str2.txt /home/sidepower/test /str.txt/home/sidepower/test /sub_fold/sub_str.txt
▣ 특정 디렉터리 전체 파일리스트 보기
find /src
src
src/str.txt
src/str2.txt
▣ 특정 파일 제외하고 찾기 → !
ls src str.txt str2.txt strUTF
find ! -name "*.txt"
src
strUTF
▣ -size
파일 크기(size)로 찾기
★ 크기 유형 b : 512 byte c : byte k : kilobyte (=1024byte) w : 2 byte (word) M : Megabyte G : Gigabyte★ 유형을 선택해서 숫자 뒤에 기입하시면 됩니다.★ byte 크기로 찾기 : c ① 10byte 파일 찾기 find . -name "*.txt" -size 10c ./src/str.txt ./str2.txt② 10byte 보다 큰파일 찾기 : 숫자앞에 + find . -name "*.txt" -size +10c ./src/strUTF ./new.txt ③ 10byte 보다 작은파일 찾기 : 숫자앞에 -find . -name "*.txt" -size -10c ./src/strSmall ./low.txt
▣ -type
파일 타입을 지정해서 찾기
★ 타입 유형d : 디렉터리 f : 일반 파일 l : 싱볼릭 링크파일 b : 블록 장치s : 소켓 파일c : 문자 장치 파일 find -type d . ./sub_fold ./src find -type f ./src/strUTF ./src/strSmall ./src/str.txt ./str2.txt ./new.txt ./low.txt
▣ 날짜와 시간을 이용한 찾기
리눅스 mtime,ctime,mtime,mmin,cmin,amin 개념 정리 바로가기
★ atime , ctime , mtime중에 주로 mtime을 이용합니다.★ amin , cmin , mmin 중에 주로 mmin을 이용합니다.① /src 디렉터리에서 1일 이내에 변경된 txt파일 찾기 find /src -name "*.txt" -mtime -1② 현재 디렉터리에 30분전에 변경된 모든 파일 찾기 find . -mmin 30③ 현재 디렉터리에 30일 이후의 옛날 txt 파일 모두 삭제 find . -mtime +30 -name "*.txt" -exec rm -f {} \;④ /src 디렉토리에 2일 이내에 10MB보다 큰 txt파일 모두 압축하기 find /src -name "*.txt" -mtime -2 -size +10M -exec gzip {} \;
▣ -empty
빈파일 (0 byte)을 찾습니다.
ls -l
-rw-rw-r-- 1 sidepower sidepower 64 1월 26 01:48 str1.txt-rw-rw-r-- 1 sidepower sidepower 0 1월 26 02:48 str2.txt -rw-rw-r-- 1 sidepower sidepower 0 1월 26 03:48 str3.txt -rw-rw-r-- 1 sidepower sidepower 53 1월 26 04:48 str4.txt -rw-rw-r-- 1 sidepower sidepower 25 1월 26 05:48 str5.txt find . -empty ./str2.txt ./str3.txt
▣ -newer
선택된 파일 보다 더 최근에 생성된 파일을 찾습니다.
ls -l
-rw-rw-r-- 1 sidepower sidepower 64 1월 26 01:48 str1.txt-rw-rw-r-- 1 sidepower sidepower 0 1월 26 02:48 str2.txt -rw-rw-r-- 1 sidepower sidepower 0 1월 26 03:48 str3.txt -rw-rw-r-- 1 sidepower sidepower 53 1월 26 04:48 str4.txt -rw-rw-r-- 1 sidepower sidepower 25 1월 26 05:48 str5.txt find . -newer str3.txt ./str4.txt ./str5.txt
▣ -exec
앞에서 수행된 결과를 가지고 추가 작업을 실행할수 있습니다.
find 명령어 -exec 명령어 {} \;
{} → 이부분에 앞에서 find 명령어 실행 결과가 들어가게 됩니다.
ls -l
-rw-rw-r-- 1 sidepower sidepower 64 1월 26 01:48 str1.txt-rw-rw-r-- 1 sidepower sidepower 0 1월 26 02:48 str2.txt -rw-rw-r-- 1 sidepower sidepower 0 1월 26 03:48 str3.txt -rw-rw-r-- 1 sidepower sidepower 53 1월 26 04:48 str4.txt -rw-rw-r-- 1 sidepower sidepower 25 1월 26 05:48 str5.txt find . -empty ./str2.txt ./str3.txt find . -empty -exec rm -f {} \; ls -l-rw-rw-r-- 1 sidepower sidepower 64 1월 26 01:48 str1.txt-rw-rw-r-- 1 sidepower sidepower 53 1월 26 04:48 str4.txt -rw-rw-r-- 1 sidepower sidepower 25 1월 26 05:48 str5.txt
▣ -perm
파일이나 디렉터리에 부여된 권한으로 찾습니다.
-perm 권한
권한 : 지정된 권한과 일치하는거 찾기
-권한 : 지정된 권한을 포함하고 추가 권한이 더 있는것도 함께 찾기
/권한 : 지정된 권한이 하나라도 포함된 것 모두 찾기
리눅스 권한 개념 바로가기
ls -l
-rw-rw-r-- 1 sidepower sidepower 64 1월 26 01:48 str1.txt-rwxrwxrwx 1 sidepower sidepower 0 1월 26 02:48 str2.txt -rw-rw---- 1 sidepower sidepower 0 1월 26 03:48 str3.txt -rw-rw---- 1 sidepower sidepower 53 1월 26 04:48 str4.txt -rw-rw-r-- 1 sidepower sidepower 25 1월 26 05:48 str5.txt find . -perm 664./str1.txt ./str5.txt find . -perm -664 ./str1.txt ./str2.txt ./str5.txt find . -perm /664 ./str1.txt ./str2.txt ./str3.txt ./str4.txt ./str5.txt
감사합니다.
댓글