윈도우즈 파일 검색은 검색창에서 검색어를 입력하여 원하는 파일 또는 폴더(디렉터리)를 찾을 수 있습니다. 리눅스도 GUI 환경에서 검색창에서 검색이 가능하지만, 대부분 CLI 환경에서 시스템 관리가 진행되다보니, 파일 검색 방법에 대해 익숙해야 원하는 파일이나 디렉터리를 찾을 수 있습니다.
본 포스트에서는 리눅스에서 자주 사용하는 파일 검색 명령어인 find, which, whereis 사용법에 대해 소개하고자 합니다. 사용법에 대해 이해하고 사용한다면, 일반 검색보다도 더 강력한 검색을 체험할 수 있습니다.
Ⅰ. find 명령어 사용법
Ⅱ. which 명령어 사용법
Ⅲ. whereis 명령어 사용법
▷ 주어진 조건을 검색하여 파일을 찾음
▷ find [경로] [옵션] [작업]
→ 경로 : 검색하는 파일 또는 디렉터리의 상위 경로를 의미
→ 옵션 : name, user, newer, perm, size 등 검색 필터를 의미
→ 작업 : 검색된 파일 또는 디렉터리에 대해 수행 내용을 의미
▷ 옵션
→ -name : 지정된 이름의 파일을 찾는다
→ -user : user 소유의 파일을 찾는다
→ -type : 지정된 형식의 파일을 찾는다
· 지정된 형식 : b - 블록파일, c - 문자, d - 디렉터리, f - 파일, l - 링크파일, s - 소켓)
→ -size[+/-]n[bckw] : 지정된 크기의 파일을 찾는다.
· +n : n보다 크다
· -n : n보다 작다
· n : n이다
· b : 512 byte
· c : byte
· k : kilobytes
· w :2 byte
▷ 작업
→ -print : 표준출력으로 검색된 파일명을 출력
→ -exec 명령어 {} \ : 찾은 파일에 대해 지정된 명령을 실행
→ -ok 명령어 {} \ : 실행 여부를 사용자에게 확인한 후 명령을 실행
▷ 명령어 사용 예시
# /root 디렉터리 하위 파일 중 file_origin_02.txt 파일 검색
[root@localhost ~]# find /root -name file_origin_02.txt
/root/test3/file_origin_02.txt
/root/test3/tar_test/file_origin_02.txt
# /root 디렉터리 하위 파일 중 file_origin_.txt 가 포함된 파일 검색
[root@localhost ~]# find /root -name file_origin_*.txt
/root/test3/file_origin_01.txt
/root/test3/file_origin_02.txt
/root/test3/file_origin_03.txt
/root/test3/tar_test/file_origin_01.txt
/root/test3/tar_test/file_origin_02.txt
/root/test3/tar_test/file_origin_03.txt
# /root 디렉터리 하위 파일 중 file_origin_으로 시작하는 파일 검색
[root@localhost ~]# find /root -name file_origin_*
/root/test3/file_origin_01.tar.xz
/root/test3/file_origin_01.txt
/root/test3/file_origin_02.tar.gz
/root/test3/file_origin_02.txt
/root/test3/file_origin_03.tar.bz2
/root/test3/file_origin_03.txt
/root/test3/tar_test/file_origin_01.txt
/root/test3/tar_test/file_origin_02.txt
/root/test3/tar_test/file_origin_03.txt
# /home 디렉터리 하위 소유자가 'test02'인 파일 검색
[root@localhost ~]# find /home -user test02
/home/test02
/home/test02/.mozilla
/home/test02/.mozilla/extensions
/home/test02/.mozilla/plugins
/home/test02/.bash_logout
/home/test02/.bash_profile
/home/test02/.bashrc
# /root 디렉터리 하위에 허가권이 644인 파일 검색
[root@localhost ~]# find /root -perm 644
/root/test/f.txt
/root/test/b.txt
/root/test2/g.txt
/root/test2/d.txt
...
# /usr/bin 디렉터리 하위에 파일 크기가 10KB ~ 100KB 인 파일 검색
[root@localhost ~]# find /usr/bin -size +10k -size -100k
/usr/bin
/usr/bin/cmp
/usr/bin/celtdec051
/usr/bin/gencat
/usr/bin/getconf
/usr/bin/celtenc051
...
# 현재 디렉터리에 있는 모든 파일명 확인
[root@localhost test3]# find . -print
.
./file_origin.tar
./file_origin_01.tar.xz
./file_origin_01.txt
./file_origin_02.tar.gz
./file_origin_02.txt
./file_origin_03.tar.bz2
./file_origin_03.txt
./tar_test
./tar_test/file_origin_01.txt
./tar_test/file_origin_02.txt
./tar_test/file_origin_03.txt
# 현재 디렉터리에 있는 디렉터리 확인
[root@localhost test3]# find . -type d -print
.
./tar_test
# /root 디렉터리 하위 파일 크기가 0인 파일의 목록을 출력
[root@localhost ~]# find /root -size 0k -exec ls -l {} \;
-rw-r--r--. 1 root root 0 Sep 28 15:41 /root/test/f.txt
-rw-r--r--. 1 root root 0 Sep 28 15:36 /root/test/b.txt
-rw-r--r--. 1 root root 0 Sep 28 15:46 /root/test2/g.txt
--w-r-xr-x. 1 root root 0 Oct 6 12:05 /root/test.txt
-rw-r--r--. 1 root root 0 Oct 12 12:09 /root/test3/file_origin_01.txt
-rw-r--r--. 1 root root 0 Oct 12 12:09 /root/test3/file_origin_02.txt
-rw-r--r--. 1 root root 0 Oct 12 12:09 /root/test3/file_origin_03.txt
-rw-r--r--. 1 root root 0 Oct 12 12:09 /root/test3/tar_test/file_origin_01.txt
-rw-r--r--. 1 root root 0 Oct 12 12:09 /root/test3/tar_test/file_origin_02.txt
-rw-r--r--. 1 root root 0 Oct 12 12:09 /root/test3/tar_test/file_origin_03.txt
-rw-r--r--. 1 root root 0 Oct 13 08:46 /root/test4/test01.txt
-rw-r--r--. 1 root root 0 Oct 13 08:46 /root/test4/test02.txt
-rw-r--r--. 1 root root 0 Oct 13 08:46 /root/test4/test03.txt
-rw-r--r--. 1 root root 0 Oct 13 08:46 /root/test4/test04.txt
-rw-r--r--. 1 root root 0 Oct 13 08:47 /root/test4/test01.avi
-rw-r--r--. 1 root root 0 Oct 13 08:47 /root/test4/test02.avi
-rw-r--r--. 1 root root 0 Oct 13 08:44 /root/find.txt
# /root 디렉터리 하위 확장명 avi 파일 삭제
[root@localhost ~]# find /root -name *.avi -exec rm -f {} \;
# 지난 24시간 동안 변경된 /var/log 디렉터리 이하 파일 목록 저장
[root@localhost ~]# find /var/log -mtime -1 \! -type d -print > changelist.txt
[root@localhost ~]# cat changelist.txt
/var/log/lastlog
/var/log/wtmp
/var/log/audit/audit.log
/var/log/rhsm/rhsmcertd.log-20201012
/var/log/rhsm/rhsmcertd.log
# 최근 5분간 변경된 /var/log 디렉터리 이하 모든 파일 목록 저장
[root@localhost ~]# find /var/log -mmin -5 -print > changelist.txt
[root@localhost ~]# cat changelist.txt
/var/log/audit/audit.log
/var/log/messages
▷ PATH 환경 변수에 있는 디렉터리를 모두 검색하고 찾고자 하는 명령어의 전체 위치 경로를 출력
▷ which [옵션] [--] 파일명
→ 세부 옵션
· -a : 모든 내용 출력
· -i : 알리아스 설정 환경 출력
· -v : 버전 정보 출력
▷ 명령어 사용 예시
# cat 명령어 전체 내용 검색
[root@localhost ~]# which cat
/usr/bin/cat
# cat 명령어 버전 정보 출력
[root@localhost ~]# which -v cat
GNU which v2.21, Copyright (C) 1999 - 2015 Carlo Wood.
GNU which comes with ABSOLUTELY NO WARRANTY;
This program is free software; your freedom to use, change
and distribute this program is protected by the GPL.
▷ 명령어의 절대 경로를 찾고, 실행 파일의 위치와 함께 소스, 설정 파일, 메뉴얼 페이지를 검색하여 출력
▷ whereis [옵션] 파일명
→ 세부 옵션
· -b : 바이너리 파일만 찾는다
· -m : 매뉴얼 섹션만 찾는다
· -s : 소스만 찾는다
▷ 명령어 사용 예시
# cat 명령어 전체 내용 찾기
[root@localhost ~]# whereis cat
cat: /usr/bin/cat /usr/share/man/man1/cat.1.gz /usr/share/man/man1p/cat.1p.gz
# cat 명령어 바이너리 파일만 찾기
[root@localhost ~]# whereis -b cat
cat: /usr/bin/cat
# cat 명령어 매뉴얼 섹션만 찾기
[root@localhost ~]# whereis -m cat
cat: /usr/share/man/man1/cat.1.gz /usr/share/man/man1p/cat.1p.gz
▽ 같이 보면 더 좋은 블로그 글 ▽
[CentOS 8] 시스템 시간 동기화 chrony (0) | 2020.10.16 |
---|---|
[CentOS 8] 작업 예약 스케줄러 (cron, at) (2) | 2020.10.15 |
[CentOS 8] 파일 압축과 해제 (1) | 2020.10.12 |
[CentOS 8] 심볼릭 링크와 하드 링크 (0) | 2020.10.08 |
[CentOS 8] 파일의 허가권과 소유권 (2) | 2020.10.06 |
댓글 영역