> 파일 및 디렉토리 관리 > file

file: 파일 타입 식별 가이드

확장자 대신 실제 바이트 내용을 검사하여 파일의 유형, MIME 정보를 판별합니다. libmagic 데이터베이스를 사용합니다.

개요

file 명령어는 파일의 확장자에 의존하지 않고 콘텐츠를 분석해 유형을 판별합니다. 텍스트/바이너리 여부, 실행 파일 포맷(ELF), 압축 파일, 이미지/오디오 등 다양한 포맷을 인식하며, MIME 타입과 인코딩도 출력할 수 있습니다.

주요 특징

  • 확장자와 무관하게 실제 내용으로 판별
  • MIME 타입과 문자 인코딩 출력 가능
  • 심볼릭 링크 대상 또는 링크 자체 판별 선택 가능
  • 압축 파일 내부까지 확인 시도 (-z)

활용 시나리오 예시

file 명령어가 특히 빛을 발하는 상황들입니다.

  • 확장자가 잘못된 파일의 실제 포맷 식별 (예: .jpg로 위장한 PDF)
  • 확장자 없는 파일의 유형 파악
  • 스크립트에서 파일 타입에 따라 처리 분기
  • 웹/네트워크 서비스에서 업로드 파일의 MIME 타입 판별
  • 심볼릭 링크 자체 또는 대상 판별
  • 압축 파일 내부 콘텐츠 분석
  • 보안 분석·포렌식에서 실행 파일 포맷 식별

주요 옵션

상황별로 자주 쓰는 옵션을 그룹화했습니다.

1) 기본 동작 & 출력 제어

2) 입력/대상 지정

3) 매직 데이터베이스/제외/디버그

4) 도움말/버전

생성된 명령어:

명령어를 조합해 보세요.

설명:

`file` 명령어를 실행합니다.

위 옵션들을 조합하여 AI와 함께 가상으로 명령어를 실행해 보세요.

사용 예시

자주 쓰는 패턴을 예제로 정리했습니다.

기본 판별

file /bin/ls

파일 유형을 기본 형식으로 출력

파일명 없이 간단 출력

file -b /bin/ls

스크립트에서 처리하기 쉬운 간단 출력

MIME 타입/인코딩

file --mime-type index.html && file --mime-encoding README.md

웹/파이프라인에서 타입 판별에 유용

압축 내부까지 확인

file -z backup.tar.gz

압축 파일의 실제 내용을 추정

심볼릭 링크 자체 vs 대상

file -h symlink && file -L symlink

링크 자체를 검사(-h)하거나, 대상을 따라가서 검사(-L)

find와 함께 MIME 타입 일괄 확인

find . -type f -print0 | xargs -0 file --mime-type

NUL 구분자를 사용해 안전하게 파일 목록을 전달

매직 데이터베이스 위치

시스템과 배포판에 따라 경로가 다를 수 있습니다.

🪄 기본 컴파일된 매직 DB

/usr/share/file/magic.mgc

대부분 배포판의 기본 위치

📁 소스 매직 디렉토리

/usr/share/file/magic/

컴파일 전 소스 규칙(.mgc가 아닌 원본)

종료 코드

스크립트에서 분기 처리할 때 참고하세요.

코드 의미
0 정상: 판별 성공(또는 요청한 작업 성공)
1 일반적인 문제: 파일 미존재/접근 불가/판별 실패 등
2 사용법 오류 또는 시스템 오류

설치

대부분 기본 탑재되어 있으나, 없다면 다음으로 설치하세요.

Debian/Ubuntu

sudo apt update && sudo apt install -y file

RHEL/CentOS/Fedora

sudo dnf install -y file

Arch Linux

sudo pacman -S --needed file

openSUSE

sudo zypper install -y file

팁 & 주의사항

  • `--mime-type`과 `--mime-encoding`을 명시적으로 쓰면 배포판/버전에 따른 `-i/--mime` 동작 차이를 피할 수 있습니다.
  • 심볼릭 링크 처리: 링크 자체를 보려면 `-h`, 대상 파일을 확인하려면 `-L`을 사용하세요.
  • 대량 처리 시 `find -print0 | xargs -0` 패턴을 사용하면 공백/개행이 포함된 파일명도 안전합니다.
  • 압축 포맷에 따라 `-z`가 항상 내부를 확인하지 못할 수 있습니다. 필요하면 먼저 압축을 해제해 확인하세요.

관련 명령어

기능적으로 유사하거나 함께 자주쓰이는 명령어들입니다.


동일 카테고리 명령어