Linux 파일 및 디렉터리 관리 핵심 명령어 가이드

이 문서는 Linux 환경에서 파일과 디렉터리 조작에 필수적인 CLI 도구를 실무 중심으로 정리한 안내서입니다. 기초 개념은 간략히 언급하되, 실제 개발 및 시스템 운영에서 자주 사용되는 패턴과 주의점에 초점을 맞추었습니다.

1. 파일 시스템의 철학: '모든 것이 파일이다'

Linux는 장치, 프로세스, 소켓까지도 파일 추상화로 표현합니다. 따라서 파일 관련 명령어는 단순한 데이터 저장소 조작을 넘어, 시스템 전반의 제어 수단이 됩니다. 본 문서에서는 mkdir, rm, mv, cp, find, ls, ln 등 핵심 명령어의 실용적 사용법을 다룹니다.

2. 기본 조작 명령어

2.1 생성, 이동, 복사, 삭제

  • mkdir -p /path/to/nested: 중첩 디렉터리 일괄 생성 (존재 여부 무시)
  • rm -f *.tmp: 임시 파일 강제 삭제 (인터랙티브 확인 생략)
  • mv --backup=numbered config.conf.bak config.conf: 덮어쓰기 전 백업 생성 (숫자 접미사 부여)
  • cp -a src/ dest/: 아카이브 모드로 복사 (권한, 타임스탬프, 심볼릭 링크 보존)

실제 예시:

# 현재 위치 기준 하위 전체 항목 수 계산 (숨김 파일 포함)
find . -mindepth 1 | wc -l

# 특정 확장자 파일만 새 디렉터리로 복사
find ./logs -name "*.log" -mtime -7 -exec cp {} ./weekly/ \;

# 이름 변경 + 타임스탬프 자동 삽입
mv report.txt "report_$(date +%Y%m%d_%H%M%S).txt"

2.2 경로 탐색

  • cd -: 이전 작업 디렉터리로 즉시 복귀
  • cd ~user: 지정 사용자의 홈 디렉터리로 이동
  • pwd -P: 심볼릭 링크를 해석한 실제 물리적 경로 출력
  • pushd /var/log && popd: 디렉터리 스택 활용한 임시 이동

2.3 콘텐츠 목록 조회

ls는 단순 열람 이상의 정보를 제공합니다. 다음 조합이 특히 유용합니다:

  • ls -lhtr: 인간 친화적 크기 표기 + 수정 시간 역순 정렬 + 숨김 파일 포함
  • ls -ld /etc: 디렉터리 자체 속성(권한, 소유자 등)만 표시
  • ls -1t | head -5: 최근 수정된 상위 5개 항목만 출력

예시 출력 분석:

$ ls -lh /usr/bin | head -3
-rwxr-xr-x 1 root root  39K Jan 10 14:22 awk
-rwxr-xr-x 1 root root  68K Jan 10 14:22 base64
-rwxr-xr-x 1 root root  45K Jan 10 14:22 basename

첫 번째 필드 -rwxr-xr-x는 파일 유형(-), 소유자(rwx), 그룹(r-x), 기타(r-x) 권한을 의미하며, 이는 chmod로 직접 조정 가능합니다.

2.4 고급 검색: find vs locate

find는 실시간 트리 탐색으로 정확하지만 느립니다. 반면 locate는 사전 구축된 데이터베이스를 사용해 빠르지만 최신성이 떨어질 수 있습니다.

실용적 사용법:

# 최근 24시간 내 생성된 .conf 파일 찾기
find /etc -name "*.conf" -ctime -1

# 실행 가능한 바이너리만 필터링
find /usr -type f -perm /u+x,g+x,o+x 2>/dev/null | head -3

# locate 데이터베이스 업데이트 (root 권한 필요)
sudo updatedb

# 패턴 매칭 후 결과 수 제한
locate -n 10 "systemd"

2.5 콘텐츠 분석 및 편집

대규모 로그나 설정 파일 처리 시, 전체 로드 없이 스트리밍 방식이 효율적입니다:

  • tail -f /var/log/syslog: 실시간 로그 모니터링
  • head -c 100KB largefile.bin | sha256sum: 대용량 바이너리 해시 계산 (처음 100KB만)
  • grep -r "ERROR" --include="*.log" /var/log/app/: 특정 패턴 재귀 검색
  • sed -i 's/old/new/g' config.yaml: 파일 내 치환 (백업 없이 직접 수정)

3. 심볼릭 링크와 하드 링크

ln 명령어는 두 가지 링크 유형을 지원합니다:

  • ln -s /original/path symlink_name: 심볼릭 링크 (타겟 경로가 이동해도 자동 갱신됨)
  • ln /original/file hardlink_name: 하드 링크 (동일 파일 시스템 내에서만 가능, inode 공유)

심볼릭 링크는 ls -l로 확인 시 화살표(->)가 표시되며, 원본이 삭제되면 'broken link' 상태가 됩니다.

4. 파이프라인과 리디렉션의 실전 활용

단일 명령어보다 조합이 더 강력합니다:

# 오래된 로그 파일 자동 정리 (7일 이상)
find /var/log -name "*.log" -mtime +7 -delete

# 특정 프로세스의 PID만 추출
ps aux | grep nginx | grep -v grep | awk '{print $2}'

# 명령어 실행 결과를 파일로 저장 + 표준 에러도 캡처
./deploy.sh > deploy.log 2>&1

태그: linux-cli find-command ls-command symbolic-link shell-pipeline

9월 2일 04:31에 게시됨