Linux, Windows 및 OS-X의 크로스 플랫폼 파일 이름에서 안전한 문자 현재 YYMMDD-NAME+PAGE대부분의 파일

현재 YYMMDD-NAME+PAGE대부분의 파일 이름을 사용하고 있습니다. NAME공백을 밑줄로 변환했습니다.

YYYY-MM-DD날짜 형식 을 사용하고 싶지만 이름과 구분하는 방법을 잘 모르겠습니다. -이름이 숫자로 시작하면 A 가 이상하게 보입니다. 를 사용 _하면 공백을 나타내는 밑줄과 충돌합니다.

여기에서 작동하는 파일 이름에서 합리적으로 안전한 문자는 무엇입니까? Linux를 사용하고 있지만 다른 사람 (Windows 7, Mac OS X)과 파일을 공유 할 수 있습니다.



답변

요약:

  • Windows : ASCII 제어 문자 및 \/:*?"<>|
  • Linux, OS-X : null 또는 /

모든 플랫폼에서 ASCII 제어 문자와 같은 인쇄 할 수없는 문자를 사용하지 않는 것이 가장 좋습니다.

윈도우

Windows에서 Windows 탐색기는 제어 문자를 허용하지 않거나 \/:*?"<>|공백을 사용할 수 있습니다. 공백을 사용하면 명령 줄에서 사용할 때 파일 이름을 인용 해야하는 경우가 있습니다 (그러나 GUI 응용 프로그램은 내가 아는 한 영향을받지 않습니다). NTFS와 같은 Windows 파일 시스템은 파일 이름으로 인코딩을 저장하지만 UTF-16이 표준입니다.

Windows의 일부 부분은 대소 문자를 구분하고 다른 부분은 대소 문자를 구분하지 않습니다. Windows NTFS 파일 시스템에서 “Ab”및 “ab”와 같은 고유 한 파일 이름을 쉽게 만들 수 있습니다. 이러한 이름은 별개의 개별 컨텐츠를 포함하는 별도의 파일을 나타냅니다. 그러나 Windows 명령 프롬프트는을 사용하여 두 파일을 모두 행복하게 나열하지만, ​​같은 명령을 사용하여 두 파일 dir중 하나에 쉽게 액세스하거나 조작 할 수는 없습니다 type. 아래를 참조하십시오.

리눅스, OS-X

Linux 및 OS-X /에서는 인쇄 가능한 ASCII 세트 만 금지됩니다. 일부 문자 (와 같은 셸 메타 문자 *?!)는 명령 행에서 문제를 일으키며 파일 이름을 적절히 인용하거나 이스케이프해야합니다.

ext2, ext3과 같은 Linux 파일 시스템은 문자 집합에 구애받지 않습니다 (문자열을 바이트 스트림으로 처리한다고 생각합니다-null 만 /허용되며 금지됩니다). 즉, 파일 이름을 UTF-8 인코딩으로 저장할 수 있습니다. 표시 또는 처리를 위해 파일 이름을 올바르게 변환하는 데 사용할 인코딩을 아는 것은 셸 또는 다른 응용 프로그램에 달려 있다고 생각합니다.

결론

그래서 당신은 아마 안전한 것을 사용할 수 있습니다 (입력하기가 어렵지 않은 경우)


Windows의 대소 문자 구분

C> dir /B
Ab
aB
аB

C> type Ab
b
b

C> type aB
b
b

C> type аB
unicode homograph

두 번째 파일의 내용을 입력 할 수 없으며 Windows type명령은 Ab의 내용을 대신 반환합니다. 세 번째 파일은 Linux의 aB 와도 다릅니다.

(Windows 10 NTFS).


답변

RedGrittyBrick의 답변은 기술적으로 정확하지만 안전성은 유일한 문제가 아니라 사용성도 중요합니다. 더 좋은 질문은 “파일 이름에 어떤 문자를 사용하는 것이 좋을까”입니다.

몇 가지 잠재적 지침 :

  • [0-9a-zA-Z_] -영숫자와 밑줄은 항상 사용하기에 좋습니다.
  • \/:*?"<>|그리고 널 바이트는 적어도 하나의 시스템에 문제가있다,해야하고 항상 피할 수.
  • 공백 은 많은 시스템에서 인수 구분 기호로 사용되므로 가능하면 공백이있는 파일 이름은 사용하지 않아야합니다. 다른 공백 (예 : 탭)은 훨씬 더 그렇습니다.
  • 세미콜론 (;) 은 많은 시스템에서 명령을 분리하는 데 사용됩니다.
    세미콜론과 쉼표 (,) 는 Windows 명령 행 에서 (일부 버전?) 명령 행 인수를 구분하는 데 사용됩니다 .
  • []()^ #%&!@:+={}'~그리고 [`] 모두 많은 껍질에서 특별한 의미를 지니고 있으며 해결하기가 성가 시므로 피해야합니다. 또한 URL에서 끔찍한 경향이 있습니다.
  • 피해야 할 주요 인물 :
    • 많은 명령 행 프로그램은 하이픈 [-] 을 사용하여 특수 인수를 나타냅니다.
    • * nix 기반 시스템 은 숨김 파일 및 디렉토리의 주요 문자로 전체 정지 [.] 를 사용합니다.
  • ASCII 세트에 없는 것은 오래된 시스템 또는 더 많은 기본 시스템 (예 : 일부 내장 시스템)에서 문제를 일으킬 수 있으므로주의해서 사용해야합니다.

기본적으로 당신을 떠난다 :

[0-9a-zA-Z -._]

것을 항상 사용하는 성가신 안전하지 (한 당신이 파일 이름을 시작으로 알파 숫자) :


답변

당신은 할 수 있습니다 :

  1. 현재 밑줄을 #(공간에 대한 판독기 기호)로 바꿉니다.
  2. 파일 이름에서 ‘섹션’날짜까지 밑줄 (또는 두 번째 하이픈-입력하기 쉬움)

Alt-1. 초기 대문자는 공백을 대체 할 수 있습니다. YYMMDD-HHMM-FileName.ext또는YYMMDD-HHMM_FileName.ext

Jan-Sep (& 1st-9th ea mo)에 대해 패딩 된 0으로 자동 정렬하는 명확한 표시를위한 최소 문자.


답변