리눅스에서 다루는 파일이 많아지다 보면 특정한 파일, 혹은 파일 안에 내용이 필요 할때가 있습니다. 또는 exec와의 연계를 통하여 검색한 프로그램 자체를 실행할 수 있습니다. 이번에는 리눅스로 파일을 찾는 방법을 알아보도록 하겠습니다.

find
find는 파일 디렉터리를 검색하는 명령어입니다.
find [경로] -name "파일명"
find ./* -name "*sample*"
find의 옵션은 다음과 같습니다.
- -name : 주어진 이름의 파일이나 디렉터리를 찾습니다.
- -type : 지정한 파일 타입을 찾습니다. (d:디렉터리, f:파일, l:링크, p:파이프, s:소켓)
- -exec : find로 파일을 찾고 해당 파일과 연계하여 명령을 수행합니다.
- -ls : ls -l가 동일하게 리스트를 출력한다.
- -iname : 대소문자 구별 안 하고 이름으로 검색한다.
- -print : 검색 결과를 파일의 절대경로로 표시합니다.
1. 전체 파일을 검색하여 파일명 찾기
find / -name 'sample*'
전체 디렉토리중 sample로 시작하는 파일 검색합니다.
2. 특정 디렉터리의 하위파일 검색
find ./ -type f
해당 예제는 현재 디렉터리에서 전체 파일을 검색하는 예제입니다. -type d인 경우에는 폴더를 검색합니다.
3. 특정 디렉터리에서 1024byte보다 큰 파일 검색
find ./ -size +1024c
해당 예제는 현재 디렉터리에서 1024바이트보다 큰 파일을 검색하는 예제입니다.
4. 찾은 파일을 실행하기 (exec)
find ./ -name "sample.sh" -exec {} \;
해당 예제는 sample.sh 파일을 찾고, 해당 shell 파일을 실행합니다.
grep
grep은 파일 안에 문자열을 검색하는 명령어입니다.
grep -r "검색할 문자열" [경로]
grep -r "Hello World" ./*
grep의 옵션은 다음과 같습니다.
- -r : 하위 디렉토리를 포함한 전체파일을 검색합니다.
- -v : 패턴과 일치하지 않는 라인을 표시합니다.
- -c : 일치하는 라인의 개수를 표시합니다.
- -l : 일치하는 내용이 있는 파일 이름만 표시합니다.
- -h : 일치하는 내용을 찾은 파일의 이름을 표시하지 않습니다.
- -n : 일치하는 라인을 표시할 때 행 번호와 함께 표시합니다.
1. 전체 파일을 대상으로 문자열 검색
grep -r "Hello World" /
최상위 디렉터리 '/' 에서 Hello World를 검색합니다.
2. 특정 파일을 대상으로 문자열 검색
find ./ -name "*.txt" | xargs grep "hello world"
해당 예제는 현재 디렉터리에서 전체 'txt' 파일 중 'hello world'가 문자열로 있는 경우 해당 위치를 출력합니다.
3. 파일 내부 문자열을 검색할 때 강조색이 나오게 하기
find ./ -name "sample.txt" | xargs grep --color=auto "Hello World"
해당 예제는 현재 디렉터리중 'sample.txt'파일을 찾고 Hello World라는 문자열이 있는 경우 강조색을 출력합니다.
4. 검색결과 파일로 저장하기
grep -r 'sample' ./ > result.txt
해당 예제는 현재 디렉토리 기준으로 전체파일중 sample이라는 문자열이 있는 경우 해당 결과를 result.txt에 저장합니다.
'컴퓨터 > Linux' 카테고리의 다른 글
Linux (6) - CLI 환경을 GUI 환경으로 만들어보자 (0) | 2024.01.17 |
---|---|
Linux (5) - 커맨드를 이용하여 인터넷을 세팅하자 (ifconfig) (0) | 2023.12.14 |
Linux (3) - Linux, Apache, MySQL, PHP 구축하기 (LAMP) (0) | 2023.01.11 |
Linux (2) - 터미널로 압축 및 압축해제 하기 (0) | 2022.06.05 |
Linux (1) - SSH 접근시 환영하는 문구를 바꾸어 보자 (0) | 2022.05.24 |