파일 탐색 (ls, cd, pwd, find)
리눅스 터미널을 처음 열면 창문 하나 없는 방 안에 있는 기분이 듭니다. 그 방 안에서 방향을 잡아주는 도구가 ls, cd, pwd입니다. 그리고 미로처럼 얽힌 디렉토리 속에서 원하는 파일을 찾아주는 탐정이 find입니다.
ls — 디렉토리 내용 보기
ls(list)는 가장 자주 쓰는 명령어입니다. 옵션 조합에 따라 보여주는 정보가 달라집니다.
ls
Documents Downloads scripts backup.sh
옵션을 붙이면 훨씬 많은 정보를 볼 수 있습니다.
ls -la /home/ubuntu
total 48
drwxr-xr-x 6 ubuntu ubuntu 4096 Apr 24 09:00 .
drwxr-xr-x 3 root root 4096 Apr 20 10:00 ..
-rw-r--r-- 1 ubuntu ubuntu 220 Apr 20 10:00 .bash_logout
-rw-r--r-- 1 ubuntu ubuntu 3526 Apr 20 10:00 .bashrc
drwxr-xr-x 2 ubuntu ubuntu 4096 Apr 24 08:30 Documents
drwxr-xr-x 2 ubuntu ubuntu 4096 Apr 23 15:00 Downloads
-rw-r--r-- 1 ubuntu ubuntu 1024 Apr 24 09:00 backup.sh
drwxr-xr-x 3 ubuntu ubuntu 4096 Apr 24 09:00 scripts
자주 사용하는 ls 옵션을 정리하면 다음과 같습니다.
| 옵션 | 의미 | 설명 |
|---|---|---|
-l |
long | 상세 정보 (권한, 소유자, 크기, 날짜) |
-a |
all | 숨김 파일(.으로 시작) 포함 |
-h |
human-readable | 파일 크기를 K, M, G 단위로 표시 |
-R |
recursive | 하위 디렉토리까지 모두 표시 |
-t |
time | 수정 시간 순으로 정렬 |
-r |
reverse | 역순 정렬 |
실전에서는 -lah 조합을 가장 많이 씁니다.
ls -lah
total 52K
drwxr-xr-x 6 ubuntu ubuntu 4.0K Apr 24 09:00 .
drwxr-xr-x 3 root root 4.0K Apr 20 10:00 ..
-rw-r--r-- 1 ubuntu ubuntu 220 Apr 20 10:00 .bash_logout
-rw-r--r-- 1 ubuntu ubuntu 3.5K Apr 20 10:00 .bashrc
drwxr-xr-x 2 ubuntu ubuntu 4.0K Apr 24 08:30 Documents
-rw-r--r-- 1 ubuntu ubuntu 1.0K Apr 24 09:00 backup.sh
cd와 pwd — 이동하고 확인하기
cd(change directory)로 이동하고, pwd(print working directory)로 현재 위치를 확인합니다.
pwd
/home/ubuntu
cd /etcpwd
/etc
cd ~ # 홈 디렉토리로cd - # 이전 디렉토리(/etc)로 복귀
/etc
cd를 인자 없이 실행하면 홈 디렉토리로 이동합니다. cd ~와 동일한 결과입니다.
find — 파일 찾기
find는 리눅스에서 가장 강력한 파일 탐색 도구입니다. 이름, 크기, 날짜, 종류 등 다양한 조건으로 파일을 찾을 수 있습니다.
기본 형식은 find [검색경로] [조건]입니다.
# 현재 디렉토리에서 .sh 파일 찾기find . -name "*.sh"
./scripts/backup.sh
./scripts/deploy.sh
./check.sh
# /var/log에서 .log 파일만 찾기find /var/log -name "*.log" -type f
/var/log/syslog
/var/log/auth.log
/var/log/kern.log
자주 사용하는 find 옵션입니다.
| 옵션 | 설명 | 예시 |
|---|---|---|
-name |
파일 이름 패턴 | -name "*.txt" |
-type f |
일반 파일만 | -type f |
-type d |
디렉토리만 | -type d |
-size |
파일 크기 조건 | -size +1M (1MB 초과) |
-mtime |
수정 날짜 조건 | -mtime -7 (7일 이내 수정) |
-empty |
빈 파일/디렉토리 | -empty |
# 100MB 이상인 파일 찾기find / -size +100M -type f 2>/dev/null
/var/lib/snapd/snaps/core22_1380.snap
/swap.img
# 최근 3일 이내에 수정된 파일 찾기find /home/ubuntu -mtime -3 -type f
/home/ubuntu/scripts/backup.sh
/home/ubuntu/.bashrc
2>/dev/null은 권한 오류 메시지를 숨기는 기법입니다. 루트 권한이 없는 디렉토리를 탐색할 때 오류가 쏟아지는 것을 막아줍니다. 이에 대해서는 다음 장에서 자세히 설명합니다.
which, whereis, locate — 명령어 위치 찾기
설치된 명령어가 어디에 있는지 알고 싶을 때는 세 가지 도구를 활용합니다.
# python3 실행 파일 위치which python3
/usr/bin/python3
# nginx의 실행 파일, 소스, 매뉴얼 위치whereis nginx
nginx: /usr/sbin/nginx /etc/nginx /usr/share/man/man8/nginx.8.gz
# locate는 데이터베이스로 검색해 훨씬 빠름locate syslog
/var/log/syslog
/etc/logrotate.d/rsyslog
/var/log/syslog.1
locate는 파일 시스템을 직접 탐색하지 않고 미리 만들어둔 데이터베이스를 조회하기 때문에 find보다 훨씬 빠릅니다. 단, updatedb 명령으로 데이터베이스를 최신화하지 않으면 방금 만든 파일은 찾지 못합니다.
세 명령어를 정리하면 이렇습니다.
| 명령어 | 용도 | 특징 |
|---|---|---|
which |
실행 파일 경로 | PATH에서만 탐색 |
whereis |
실행 파일 + 매뉴얼 + 소스 | 표준 위치 탐색 |
locate |
시스템 전체 파일 검색 | 빠르지만 DB 최신화 필요 |
파일을 찾는 것에 익숙해졌다면, 이제 파일을 실제로 조작하는 방법을 살펴볼 차례입니다.