파일 검색 및 명령어 사용법

2024. 3. 17. 09:43리눅스/모두의 리눅스

728x90
반응형

파일을 찾는 방법

파일을 찾는 명령어로는 find와 locate가 있다. 

find 명령어 : 디렉터리 트리에서 파일 찾기

find는 이름 그대로 파일을 찾는 명령어이다. 옵션 지정 방식이 복잡하다.

  • find <검색할 디렉터리> <검색 조건> <액션>

검색할 디렉터리를 기점으로 "검색 조건"을 만족하는 파일을 찾아서 "액션"을 실행한다. 검색 조건에 아무런 조건도 지정하지 않으면 지정한 디렉터리 안의 모든 파일과 디렉터리를 대상으로 액션이 실행된다.

find . -name file.txt -print

 

액션 조건 -print는 파일의 경로를 출력하는 액션으로 find 명령어를 사용할 때 자주 사용된다. 액션에 아무런 인자도 지정하지 않으면 -print가 기본적으로 사용된다.

mkdir -p dir1/doc
touch file-1.txt dir1/doc/file-1.txt
find . -name file-1.txt -print

# ./file-1.txt
# ./dir1/doc/file-1.txt

 

find 명령어는 지정한 디렉터리 트리를 내려가면서 검색 조건에 일치하는 파일을 검색한다. 디렉터리가 깊게 중첩되어 있어도 파일을 쉽게 찾을 수 있다.

find 검색 조건

-name, -iname은 파일 이름으로 검색을 한다. -name은 대소문자를 구별하지만 -iname은 구별하지 않는다.

 

파일 이름에는 와일드카드로 *나 ?를 사용할 수 있다. -name으로 이름을 지정할 때 와일드카드를 사용 시 ''(작은따옴표)로 감싸줘야 한다. 그래야 배시의 경로 확장이 적용되지 않는다.

 

find 뿐만 아니라 "모든 명령어를 실행할 때 *와 같이 셸이 변환하는 문자(메타 문자)를 인자로 지정할 때는 주의"를 기울어야 한다.

파일 형식으로 찾기(-type)

  • -type f : 보통파일
  • -type d : 디렉터리
  • -type l : 심볼릭 링크
find . -type d -print

.
./dir1
./dir1/doc

검색 조건 여러 개 지정하기(-a)

find 명령어를 사용할 때 -a(AND)를 사용하여 검색 조건을 여러 개 지정하면 해당 조건에 모두 일치하는 파일을 찾을 수 있다. 

  • find . -type f -a -name '*.txt' -print
  • find . -type f -name '*.txt' -print

https://blog.naver.com/skout123/50134238919

locate 명령어 : 데이터베이스에서 파일 찾기

locate는 경로의 일부를 지정하여 파일을 찾을 때 사용하는 명령어이다. 이때 전용 데이터베이스에서 검색하므로 그 자리에서 디스크를 스캔해서 파일을 찾는 find보다 훨씬 빠르다. locate는 별도로 설치해야 한다.

설치하기

locate --version으로 설치 유무 확인을 해준다. 설치가 안되어 있다면 설치를 진행한다.

  • sudo apt-get install mlocate
  • yum install mlocate

설치 후에는 파일 경로 목록을 데이터베이스에 등록해줘야 한다. 슈퍼 사용자 권한으로 "updatedb" 명령어를 실행하면 데이터베이스가 만들어진다.

  • sudo updatedb

locate를 설치하면 updatedb가 주기적으로 실행되도록 설정해준다.

파일찾기

lcate [옵션] <검색 패턴>

https://blog.naver.com/skout123/50134238919

locate는 사전에 만든 데이터베이스를 활용하기 때문에 검색 속도가 빠르다. 업데이트를 해줘야 하기때문에 몇가지 문제가 있다,

  • locate로 검색된 파일이 실제로는 디스크에 존재하지 않을 수 있다.
  • locate로 검색되지 않았지만 실제로는 존재할 수 있다.

즉, 방금 만든 파일은 locate 명령어로 검색되지 않는다. 그래서 시스템에 원래부터 있었던 파일이나 며칠 전에 만든 파일를 빠르게 검색할 때 사용한다고 여기면 좋다.

다양한 검색 방법 지정하기

  • locate '*.sed'
  • locate -i notes : 대소문자 무시하고 검색된다.
  • locate -b python : 파일 이름만으로 검색된다.
  • locate docs document : OR 조건으로 검색된다
  • locate -A(or -all) bash doc : AND 조건으로 검색된다.

명령어 사용법 확인하기

--help 옵션은 명령어에 대한 도움말을 출련한다. 출력 내용은 명령어마다 다르다. 대부분 다음과 같은 내용을 포함한다.

  • 사용 방법
  • 명령어에 대한 개요
  • 지정할 수 있는 옵션 목록과 그 의미
  • 그외 참고 자료

man 명령어 : 매뉴얼 출력

man은 지정한 명령어의 온라인 매뉴얼을 출력하는 명령어이다. --help 옵션보다 훨씬 자세한 내용을 담고 있다. 명령어뿐만 아니라 리눅스의 설정 파일이나 라이브러리에 대한 설명도 포함하고 있다.

  • man cat

man을 통해 확인할 수 있는 정보는 보통 다음과 같다.

  • 이름 : 명령어 이름과 간단한 설명
  • 서식 : 옵션이나 인자 지정 방법
  • 설명 : 명령어의 상세 설명
  • 옵션 : 지정할 수 있는 옵션 목록과 사용 방법
  • 예 : 대표적인 사용 방법 예시
  • 환경 변수 : 동작을 바꾸는 변수에 대한 설명
  • 파일 : 설정 파일이나 관련 파일
  • 관련 항목 : 관련된 명령어 혹은 동작이 비슷한 명령어
  • 버그 : 알려진 버그

명령어 이름을 모르는 경우에는 키워드로 매뉴얼을 검색할 수 있다.

  • man -k <키워드>

매뉴얼의 섹션은 크게 9가지가 있다. 다른 섹션에 같은 이름의 매뉴얼이 있는 경우가 있다. 예를 들어 crontab의 경우 crontab(1)과 crontab(5)가 있다. 이런 경우에는 명령어 이름뿐만 아니라 섹션 번호도 함께 지정해야 원하는 매뉴얼을 확인할 수 있다.

  • man 1 crontab
  • man 5 crontab
  • man crontab : 번호가 작은 섹션1이 화면에 표시 됨

특정 명령어가 어떤 섹션에 포함되는지 확인은 "-wa" 옵션을 사용하면 된다.

  • man -wa crontab
    /usr/share/man/man1/crontab.1.gz
    /usr/share/man/man5/crontab.5.gz

man의 섹션 번호

  • 1 - 명령어
  • 2 - 시스템콜
  • 3 - 라이브러리 함수
  • 4 - 디바이스 파일
  • 5 - 파일 서식
  • 6 - 게임
  • 7 - 기타
  • 8 - 시스템 관리 명령어
  • 9 - 커널 루틴

명령어 검색

which 명령어 : 명령어의 전체 경로 표시

리눅스의 명령어의 실체는 "파일"이다. 예를 들어 cat 명령어의 실체는 /bin 디렉터리 아래에 /bin/cat이라는 파일이다.

cat 명령어만 입력해도 작동되는 이유는 셸이 $PATH라는 환경 변수에 저장된 장소에서 명령어를 찾도록 되어 있기 때문이다.

 

패스를 설정해 두면 명령어가 실제 어디에 있든 명령어의 이름만으로 실행할 수 있다. 명령어 which를 사용해 위치를 확인할 수 있다.

  • which cat
  • whic -a lsmod : 같은 이름의 파일 전부 출력

한글 문서와 영어 문서

명령어 도움말이 한글이 표시되지 않으면 명령어 아래와 같이 붙이면 된다.

  • LANG=ko_KR.UTF-8 cat --help

영어로 출력하려면 LANG=C를 붙이면된다. LANG=C는 기본 설정을 의미하며 리눅스 기본 언어는 영어이다.

  • LANG=C cat --help
반응형

'리눅스 > 모두의 리눅스' 카테고리의 다른 글

파일 조작의 기본  (1) 2024.02.12
파일과 디렉터리  (1) 2024.02.10
셸 도움 기능  (1) 2024.02.07
  (1) 2024.01.31
리눅스  (0) 2024.01.31