파일 이름(영어: filename or file name) 또는 파일명(file名)은 특별한 종류의 문자열이며 컴퓨터의 파일 시스템에서 저장된 파일을 구별하기 위해 사용된다. 운영 체제에 따라서 그러한 이름이 디렉터리로 인식될 수도 있다. 다른 운영 체제들은 파일 이름에 길이를 제한하거나 어떠한 문자열들을 허용하지 않을 수 있다. 또, 파일 시스템과 운영 체제에 따라 파일 이름의 대소문자를 구분하거나 구분하지 않을 수도 있다. 이를테면, 옛 MS-DOS 버전들은 8글자의 이름과 3글자의 확장자만을 지원하였으나, MS-DOS 7.x 이후부터는 255자의 긴 파일 이름을 지원한다.
파일 이름은 다음과 같이 이루어져 있다.
수많은 운영 체제는 파일 이름에 들어가는 문자에 제어 문자를 사용할 수 없게 하고 있다. 이를테면 도스와 초기 윈도 시스템은 8.3 파일 이름 변환을 따를 것을 요구한다. 유닉스 계열 운영 체제는 예외인데 파일 이름이 들어갈 수 없는 금칙 제어 문자가 null 문자이다. 이는 C에서 문자열 끝을 알리는 지시자이기 때문이다. 또, 유닉스에서는 파일 이름에 경로를 나타내는 /를 사용할 수 없다.
일부 운영 체제는 파일 이름에 나타나는 다음의 특별한 문자를 사용하지 못하게 하고 있다:
/
\
?
%
*
:
|
"
<
>
.
참고 1: 대부분의 유닉스 셸은 인용하거나 빠져나가기 위하여 특정한 문자를 요구한다: 공백, <, >, |, \, 또 가끔은 :, (, ), &, ;, 및 ?, *와 같은 특수 문자
five\ and\ six\<seven (빠져나가는 예)'five and six<seven' or "five and six<seven" (인용의 예)
윈도우에서 공백과 온점은 파일 이름의 마지막에 허용하지 않는다. 온점은 파일 이름의 처음에는 허용하지만 윈도우 탐색기와 같은 일부 윈도 응용 프로그램은 이러한 파일의 이름을 만들거나 이름을 바꾸는 것을 금지한다. (유닉스 계열 운영 체제에서는 숨김 파일 및 디렉터리를 기술하는 데 사용하는 변환이기는 하다) 해결책으로 다른 응용 프로그램을 이용하거나 어느 응용 프로그램 안에서 원하는 파일 이름으로 파일을 저장하는 방법이 있다.[2]
일부 운영 체제 파일 시스템(특히 다른 운영 체제에 원래 추가된 파일 시스템)은 해당 운영 체제의 특정한 응용 프로그램들은 더 많은 제한을 받기도 하고 더 많은 해석을 하기도 한다.
유닉스 계열 운영 체제, MS-DOS, 윈도우에서 파일 이름 "."와 ".."는 특별한 의미가 있다. (각각 현재 및 부모 디렉터리).
그뿐 아니라 윈도와 도스에서 일부 글자는 파일 이름으로 금지되어 사용할 수 없다.[2] 이를테면 도스 장치 파일이 그러하다:
CON, PRN, AUX, CLOCK$, NUL COM0, COM1, COM2, COM3, COM4, COM5, COM6, COM7, COM8, COM9 LPT0, LPT1, LPT2, LPT3, LPT4, LPT5, LPT6, LPT7, LPT8, and LPT9.
이러한 제한이 있는 운영 체제들은 다른 일부 파일 시스템과 호환되지 않는 경향이 있다. 이를테면 윈도는 유효한 유닉스 파일 이름인 aux.c, q"uote"s.txt, NUL.txt와 같은 것들을 다루는 데 실패하거나 오류를 보고하기도 한다.