Linux

15. 파일 검색 조건

jih0ssang 2023. 10. 10. 13:33

목차

    하드 링크와 cp로 원본 복제본과 차이

    - 하드 링크는 원본 파일과 동일한 inode를 공유하며, 원본 파일이 수정되면 하드 링크 파일도 수정된다. 이름만 다른 원본 파일이다.

    - cp로 원본을 복제한 파일은 원본 파일과 별개로 관리되는 파일이며, 원본 파일이 수정되어도 영향을 받지 않는다.

     

    심볼릭 링크

    - 원본 파일의 위치 경로가 담겨있다.

    파일 찾기

    $ find ~ -name cocktail -print

    홈디렉터리 아래에 있는 모든 파일 중 이름이 cocktail인 파일 경로 출력 

    ~ : 홈디렉터리

    -print : 파일 경로 출력

     

    검색 조건

    -name 파일명: name이 파일명인 파일을 검색 

    -mtime N : 갱신 시각이 N일 이전인 파일 검색

    -user U : 파일 소유자가 U인 파일을 검색

    -regex P : 경로명 전체가 정규표현식 P와 일치하는 파일 검색

    -path P : 경로명 전체가 문자열 P와 일치하는 파일 검색

     

    $ find ./ -regex “./.*\.c$”

    현재 디렉터리 이하를 검색해서 확장자가 .c인 파일을 찾는다.

     

    처리 방법

    -ls : 검색 결과로 찾은 파일 정보를 표시

     

    $ find 조건 -exec command; 

    exec 다음부터 ;(세미콜론)을 만날 때 까지로 정의 되어있다.

    이렇게 쓸 경우, 쉘이 ;(세미콜론)을 특수한 문자로 인식하여 명령어에게 ;(세미콜론)이 전달되지 않는다. 그러면 find는 어디까지 명령어를 실행해야하는지 몰라서 에러가 난다.

    ;(세미콜론)의 특수한 의미를 제거하기 위해 \(백슬래쉬)를 사용한다.

     

    $ find . -name ‘*.sh’ -exec basename {} \;

    현재 디렉터리 및 하위디렉터리에서 확장자가 `.sh`인 파일을 찾아 해당 파일들의 이름만 출력하는 명령어이다.

    `-exec`로 `find` 명령어가 찾은 파일에 대해 실행할 명령어를 지정한다.

    `basename`는 전체 파일 경로에서 파일 이름만 추출하는 명령어이다.

    {}은 찾은 파일들을 치환한 것이다. `\;`은 명령어 실행의 끝을 알리는 특수문자이다.

     

    현재 실행중인 쉘 프로세스를 변경할 때 사용한다.

    $ exec /bin/bash 현재 셸을 bash셸로 변경

    $ exec $SHELL 현재 셸을 새로고침. (보통 환경변수 변경해서 적용할 때 사용)

     

    $ find dir -name filename -exec /bin/rm {} \;

    dir 디렉터리에서 파일명이 filename인 파일을 찾아서 삭제한다.

     

    exec와 execdir 차이

    - exec: 명령어 실행의 시작 위치를 현재 디렉터리로 지정한다.

    - execdir: 명령어 실행의 시작 위치를 검색된 파일이 위치한 디렉터리로 지정한다.

     

    $ find /home/user -name “*.txt” -execdir ls -l {} \;

    `/home/user` 디렉터리에서 파일명이`*.txt`인 파일을 검색하고, 

    검색된 파일이 위치한 경로에서 `ls -l` 명령어를 실행한다. {}=검색된 파일

     

    ok: execdir와 유사하지만 명령어 실행 전에 사용자에게 확인 메시지를 보낸다.

    $ find /home/user -name “*.txt” -ok rm {} \;

    /home/user 디렉터리에서 파일명이 `.txt`인 파일을 검색하고 

    검색된 파일의 경로에서 `rm` 명령어를 실행하기 전에 사용자에게 확인 메시지(ok)를 보여준다.

     

    'Linux' 카테고리의 다른 글

    17. 사용자 이력과 시스템 정보 표시  (0) 2023.10.10
    16. 리다이렉트  (2) 2023.10.10
    14. 사용자 및 시스템 정보 표시  (0) 2023.10.10
    13. swap과 mount  (0) 2023.09.18
    12. 하드디스크 구조  (0) 2023.09.18