목차
하드 링크와 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 |