티스토리 뷰

linux 기초 find 명령어



find 명령은 리눅스의 계측 구조에서 

특정 파일이 어느 디렉터리에 있는지 찾아주는 역활을 합니다.

grep은 파일 내용을 검색하는 데 반해 find는 파일 생성 일자, 이름, 파일 소유자 등 

다양한 조건에 맞는 파일을 찾습니다.





find 명령어




◎ find  파일을 찾습니다.


 - 조건에 맞는 파일을 지정한 위치에서 찾는다.

형식 - find [경로] [검색 조건] [동작]

옵션 →find -name [파일이름] : 파일 이름으로 검색한다.

         find -type 파일 종류 : 파일의 종류로 검색한다.

         find -(+,-)size  [크기] : 해당 크기의 파일을 찾을 수 있다.

         find -atime (-,+)X :  접근한지 X일에 해당하는 파일.

         find -user loginID : 지정한 사용자가 소유한 모든 파일을 검색한다.

         find -perm 접근 권한 : 지정한 사용 권한과 일치하는 파일을 검색한다.


         


동작 -exec 명령 {} \;     : 검색된 파일에 명령을 실행한다.

          -ok 명령 {}\;     : 사용자의 확인을 받아서 명령을 실행한다.

          -ls : 검색 결과를 긴 목록 형식으로 출력한다.


=========================================================================




↑파일을 찾을 경로(대상)을 붙여 원하는 파일을 찾을 수 있고, 

그냥 #>find -name [대상]을 사용해서 현재 위치에 있는지 없는지 찾을 수 있습니다.




↑* 를 이용해 korea로 시작하는 모든 파일을 검색할 수 있습니다.

(*를 기준으로 앞에 korea가 있으면, korea로 시작하는 모든 파일 ex)korea*)

(*를 기준으로 뒤에 korea가 있다면, korea로 끝나는 모든 파일 ex)*korea )





↑기본적으로 find -name [대상] 명령어를 사용하면, 디렉터리와 파일을

모두 찾지만 type를 사용하면 파일과 디렉터리를 각각 찾을 수 있습니다.


파일 : find -name [대상] -type f

디렉터리 : find -name [대상] -type d




#>fallocate -l [파일 크기] [파일 이름] 명령어를 통해 

100이라는 이름의 파일을 만드는데  그 파일의 용량을 100M로 해서 생성하겠다. 




↑ 용량이 100M인 100이라는 파일이 생성 되었습니다.


조금 더 간단하게 용량을 볼 수 있습니다.↓

tip! ls -lh는 용량을 조금더 보기 편한 수치로 자동변환되어 보여줍니다.






find -size [파일 크기] 명령어를 이용해 찾고자 하는  사이즈의 파일을 찾을 수 있습니다.


 


↑ 파일 크기 앞에 (+,-)를 붙여 용량이 초과 한것과 미만 인것을 찾을 수 있습니다.

용량이 큰 것을 정리할때 사용하면 좋습니다.




↑ find -atime [일수] 명령어를 사용하면, 접근한 일수에 해당하는 파일을 찾습니다.

역시 +는 초과, -는 미만을 의미하며, +X 는 접근한지 X일 초과 된 파일을 뜻하고

-X 는 접근한지 X일 미만 인 파일을 의미합니다.



########Stat 명령어###########################################################################




#>stat [대상] 명령어는 대상의 시간정보를 기록합니다.



1.Access  Time: 접근한 시간(실행하거나 vi로 열었을 때)-시간 정보가 변경됩니다.

2.Modify Time:수정한 시간(내용을 변경 시켰을 때)-시간 정보가 변경된다. ex)파일이 언제 내용이 바뀌었는지 확인 할 수 있습니다.

3.Changed Time: 변경한 시간(권한을 변경하거나 소유권을 변경했을 때 )-시간 정보가 변경된다.ex)소유권이 언제 바뀌었는지 확인할 수 있습니다.

 


vi로 파일을 열어서 내용을 수정하면 3가지가 모두 변경 됩니다.




############################################################################################




-exec 명령 "{}" \; 는 find 명령어로 검색된, 파일에 해당 명령을 실행하라는 명령어 입니다.

 (-exec 명령 "{}" \;  → 이 형식을 꼭 지켜주어야 합니다. // (\ = 역슬래쉬) )

find 명령의 -exec 를 사용할 때는 매개변수로 ;를 반드시 넘겨 줘야합니다.



#매개 변수는 전달되는 값을 뜻합니다.

#리눅스에 거의 대부분의 명령어들이 C언어로 만들어진 프로그램 입니다.

                                     #>ls -l  /root    ←ls 라는 프로그램을 가동 하는데 첫 번째 매개변수로 -l을 전달하고

                                         두 번째 매개변수 매개 변수로 /root를 가동하겠다. 라는 의미입니다.



bashshell(현재 명령어창)에서 사용하는 ; 는 메타문자이기 때문에 \를 안하면

명령어 구분자로 작동해서 find 명령어가 에러가 납니다.

그래서 ; 이 find 프로그램으로 전달될 수 있게 \처리 해서 ;의 구분자로서의 특수한 기능을 빼 버려야 합니다.


#메타 문자 -특수한 기능을 가진 문자들




메타문자를 그냥 문자열로 출력 하고 싶을때도 반드시  \처리를 해주어야 합니다.↓






 -ok 명령 "{}" \; 는 사용자의 확인을 받아서 명령을 실행 합니다.

명령을 치면, 그 명령을 수행할 건지 물어봅니다.

원하면 y를 원하지 않으면, n를 누르시면 됩니다.


↑ 원하는 명령만 수행 할 수 있습니다.












----------------------------------------

참고 -페도라 리눅스 -한빛 아카데미