개요
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`가 항상 내부를 확인하지 못할 수 있습니다. 필요하면 먼저 압축을 해제해 확인하세요.