쿼카러버의 기술 블로그
Linux Shell Script - find (리눅스에서 파일, 디렉토리 찾는 법) 본문
Linux Shell Script - find (리눅스에서 파일, 디렉토리 찾는 법)
quokkalover 2021. 7. 22. 18:34타겟 : find 명령어가 궁금하신 분들
읽는 법:
- 당장의 커맨드가 궁금하신 분들은 Easy Command
- 원리가 궁금한 분들은 find in detail까지 읽기
Easy Command
현재 디렉토리 하위에 존재하는 파일 중에 이름이 매칭되는 파일 찾는 법
find . -name '{파일 이름}'
$ find . -name '*.txt'
현재 디렉토리 하위에 존재하는 파일 중에 이름이 매칭되는 파일 찾는 법
find . -name {파일 이름}
$ find . -name lazy.txt
find
in detail
리눅스를 쓰다보면
1) 파일/디렉토리를 찾거나
2) 특정 파일이 어떤 문구를 포함하고 있는지 확인하고 싶을 때가 있다. (해당 케이스는 아래 링크 참고)
https://etloveguitar.tistory.com/34
본 글은 1) 파일/디렉토리를 찾는 경우에 관한 글이다.
파일/디렉토리를 찾고자 할때는 보통 많이 쓰는게 find
명령어다.
find
명령어는 파일 자체를 검색한다.
위와 같은 구조의 파일 디렉토리가 있다고 해보자.
richet의 home
디렉토리는 lazy.txt
파일과 richet
, baby
두 개의 하위 디렉토리를 가진다.
1) 현재 디렉토리 하위에 있는 모든 디렉토리를 찾는다.
home
디렉토리에서 다음 명령어를 실행해보자.
$ find . -type d
출력은 다음과 같다.
2) 현재 디렉토리 하위에 있는 모든 파일을 찾는다.
home
디렉토리에서 다음 명령어를 실행해보자.
$ find . -type f
출력은 다음과 같다.
3) maxdepth
를 사용해서 검색의 깊이 제한
$ find . -maxdepth 1 -type f
4) mindepth를 사용해서 특정 깊이 아래만 검색
-mindepth
2는 2 이상 수준 이하의 모든 파일을 찾는다.
find . -mindepth 2 -type f
5) 이름 매칭하기
와일드 카드 *
사용
find . -name *.txt
위 처럼 실행 할 경우 에러가 발생한다.
원인은 *
에 잇는데, *
같은 와일드카드 문자를 쉘이 명령문을 실행하기 전에 전개를 하고, 따라서 *.txt
를 먼저 전개하면서 haha.txt
가 된다.
근데 lazy.txt
도 있기 때문에 오류발생..
그러면 어떻게 해야 할까?
아래처럼 하면 된다
find . -name '*.txt'
이렇게 하면 쉘이 *
을 전개하지 못하면서 find 명령어는 *.txt
패턴을 얻게 된다.
파이프를 활용한 조합
1) 모든 파일의 행을 카운트 하기
$ wc -l $(find . -name '*.txt')
위 커맨드를 실행할 경우, 쉘은 젤 처음으로 $()
내부를 실행한다. 그리고 나서 $()
표현식을 명령어의 출력결과로 대채한다.
find의 출력결과가 4개의 파일이 될테고, 따라서 쉘은
wc -l haha.txt lazy.txt ./richet/auth.txt ./baby/lazy/txt
가 된다.
2) find
와 grep
의 조합
find
가 패턴이 매칭되는 파일을 찾고
grep
이 또 다른 패턴과 매칭하는 파일 내부의 행을 찾는다.
아래의 커맨드를 실행할 경우 .txt
파일 중에 haha
를 가지고 있는 파일과 해당 행을 찾아준다.
grep haha $(find . -name '*.txt')
참고 자료
http://statkclee.github.io/xwmooc-sc/novice/shell/06-find.html
'Linux - Ubuntu > Shell Script' 카테고리의 다른 글
[Linux] tr - 리눅스 명령어 tr에 대해서 (0) | 2021.08.18 |
---|---|
[Linux] sed - 리눅스 명령어 sed에 대해서 (1) | 2021.08.18 |
Linux Shell Script - Pipe ( | ) (리눅스에서 파일 검색법, cpu 모델명 찾기 등) 쉬운 사용법 & 원리에 대한 이해 (0) | 2021.07.18 |
Linux Shell Script - Redirection (>, >>, 2>&1) (커맨드/프로그램 로그 저장) 쉬운 사용법 & 원리에 대한 이해 (0) | 2021.07.18 |
Linux Shell Script - while 문 (반복문) (테스트 스크립트 반복 실행하고 싶을 때 등) (0) | 2021.07.18 |