유닉스형 시스템이 세대를 거쳐 전해 내려온 전통에 따라, 리눅스 파일시스템이 꽤나 체계적이다.
이번 내용은 시스템의 파일을 검색하는 데 사용하는 명령어를 정리할 것이다.
1. locate - 손쉽게 파일 찾기
$ locate bin/zip
locate 프로그램은 경로명에 대한 빠른 데이터베이스를 검색을 수행하고 주어진 조건에 일치하는 모든 이름을 출력한다.
예를 들면, zip으로 시작하는 모든 프로그램을 찾으려고 한다.
위의 코드처럼 bin/ 으로 끝나는 디렉토리명을 지정한 다음, 경로명을 검색하고 bin/zip 문자열이 포함된 결과를 출력한다.
/usr/bin/zip /usr/bin/zipcloak . . .
2. find - 다양한 방법으로 파일 찾기
#
$ find ~
# 파일의 개수를 출력해주는 wc 명령어 사용.
$ find ~ | wc -l
locate 프로그램은 오로지 파일명에 근거하여 파일을 찾을 수 있지만
find 프로그램은 다양한 속성에 근거하여 주어진 디렉토리를 검색하여 파일을 찾는다. 즉 특정 조건에 부합하는 파일을 찾아낼 수 있다는 장점이 있는 것이다.
find에는 테스트, 액션, 옵션을 적용하여 검색할 수 있다.
1) 테스트
검색 결과에서 디렉토리 목록만을 보고 싶을 때,
-type d 라는 테스트를 추가해서 디렉토리 검색으로 제한한 코드이다.$ find ~ -type d | wc -l
-type f 하는 명령어를 이용해서 일반 파일을 검색할 수도 있다.
파일 형식 찾기
- b : 블록 특수 파일
- c : 문자 특수 파일
- d : 디렉토리
- f : 파일
- l : 심볼릭 링크 파일
또 다른 예를 들면,
$ find ~ -type f -name "*.JPG" -size +1M | wc -l
위의 코드를 보면 와일드 카드 패턴 *.JPG와 일치하면서 1메가바이트보다 큰 파일을 검색해 보는 코드이다.
-name : name 테스트를 사용해서 파일 명을 출력한다.
"*.JPG" : 경로명 확장을 막기 위해서 따옴표를 사용였고, .JPG로 끝나는 파일명을 가리킨다.
+1M : 1 메가바이트보다 큰 파일 ( - 인 경우, 보다 작은 파일을 뜻함 )
2) 연산자
find의 논리 연산자
- -and : 연산자를 기준으로 양쪽 테스트 조건이 모두 참인 경우, -a로 줄여 쓸 수 있다.
- - or : 연산자를 기준으로 양쪽 테스트 중 하나라도 참인 경우, -o로 줄여 쓸 수 있다.
- -not : 연산자 다음에 나오는 테스트가 거짓인 경우 검색, -!로 줄여 쓸 수 있다.
- ( ) : 테스트와 연산자를 조합하여 표현한 내용을 하나로 그룹화할 때 사용된다.
3) 액션
미리 정의된 액션
- -delete : 현재 검색된 파일을 삭제한다.
- -ls : 검색된 파일에 대하여 ls -dils와 같은 명령을 실행, 출력으로 전송된다.
- -print : 검색 겨로가의 전체 경로명을 표준 출력으로 출력한다.
- -quit : 검색 조건에 해당하는 결과가 하나라도 나올 경우 검색 종료.
사용자 정의 액션
미리 정의된 액션뿐만 아니라 임의의 명령어를 실행할 수도 있다.
대표적인 것으로 -exec 액션이 있다.
$ find ~ -type f --name "어쩌고" -exec rm '{}' ';'
-exec : 뒤에 올 명령어들을 실행하라는 뜻이다. (rm 이면 삭제)
'{}' : 현재 경로명에 대한 심볼릭 링크를 표시.
';' : 실행이 끝마침을 표시.
'스터디 > 리눅스 커맨드라인' 카테고리의 다른 글
[리눅스] 19. 정규 표현식 (0) | 2022.05.30 |
---|---|
[리눅스] 18. 파일 보관 및 백업 (0) | 2022.05.23 |
[리눅스] 16. 네트워킹 (0) | 2022.05.16 |
[리눅스] 15. 저장장치 (0) | 2022.05.16 |
[리눅스] 14. 패키지 관리 (0) | 2022.05.08 |