OS X 명령 행을 통한 파일 확장자 표시 / 숨기기


21

터미널을 통해 특정 파일의 확장자가 Finder에 표시되는지 여부를 변경하는 방법을 찾고 있습니다.

$ hideextension ~/music/somesong.mp3

정보 를 열거 나 확인란을 변경 하지 않아도 매우 지루합니다.

FastScripts를 사용하여 바로 가기를 통해 호출하는 스크립트에 통합 할 계획입니다. 이 작업을 수행하는 방법에 대한 아이디어는 환영하지만 GUI 스크립팅을 사용하지 않는 것이 좋습니다.


차이가 있다면 Lion에서이 작업을 수행하려고합니다.
joshua.thomas.bird

답변:


24

GUI를 통해이를 변경하는 유일한 방법 은 Finder Info 윈도우 에서 Hide extension 을 클릭 하는 것 입니다. 이를 확인하면 확장 속성 이 변경 되는데, 일반적으로 편집 할 수없는 확장 속성은 최소한 쉽지 않습니다. 그러나 도구를 사용하여이를 수행 할 수 있습니다.com.apple.FinderInfo

아래가 작동하려면 Finder의 환경 설정에서 모든 파일 확장자 표시를 선택 해제 해야합니다 .


AppleScript를 통해

AppleScript는이 기능을 set extension hidden명령 과 함께 제공합니다 . 분명히 alias파일 객체 가 필요 합니다. 예를 들어 대화 상자를 통해 얻을 수 있습니다. 다음은 최소한의 작업 예입니다.

tell application "Finder"
    set some_file to (choose file)
    set extension hidden of some_file to true
end tell

반대로, 여기 true와 교환 false하십시오. 전체 통화는 다음과 같습니다.

set extension hidden of alias "Macintosh HD:Users:werner:Desktop:file.png" to true

스크립트 파일에서도 이것을 직접 실행할 수 있습니다 ( 추가로 @DanielBeck 감사 합니다).

on run argv
tell application "Finder" to set extension hidden of (POSIX file (first item of argv) as alias) to true
end run

이것을 다른 이름으로 저장 filename.scpt하고 다음을 사용하여 명령 행에서 실행하십시오.

osascript filename.scpt targetfile

SetFile명령

참고 : 이것은 Xcode 6부터 사용되지 않습니다.

Xcode가 설치되어 있다면 SetFile(1)바이너리 를 얻을 것입니다. 바이너리는 원하는 것을 정확하게 수행합니다 (파일 속성과 관련된 몇 가지 기능을 더 제공합니다).

확장명 숨기기 :

SetFile -a E <file>

확장 프로그램을 다시 표시하십시오.

SetFile -a e <file>

엄밀히 말하면 파일이 아닌 별칭입니다. 다음은 명령 줄에서 애플 스크립트를 사용하는 방법은 다음과 같습니다 on run argv [newline] tell application "Finder" to set extension hidden of (POSIX file (first item of argv) as alias) to true [newline] end run로 사용 osascript filename.scpt targetfile.
Daniel Beck

1
물론 그렇습니다. 전체 AppleScript 이벤트를 추가했습니다. 앞으로는 답변에 중요한 내용을 추가하십시오. 언제나 환영합니다.
slhck

1
고맙게도 내가 Xcode를 설치하고 SetFile 트릭을 :-)했던 내가 찾던 그냥 뭐 ..
thandasoru

SetFileXcode 6 부터 사용되지 않습니다 . 또한 매뉴얼 페이지 링크가 만료되었습니다.
Franklin Yu

@FranklinYu 정보 주셔서 감사합니다. 대체품을 알고 있습니까?
slhck

4

귀하의 답변에 대한 감사 slhck , 그것은 내가 원하는 일을하는 데 도움이되었습니다.

바로 가기를 좋아하기 때문에 Automator를 통해 "Run Shell Script"서비스를 만들었습니다.

for f in "$@"
do
    STATUS=`getFileInfo -ae "$f"`
    if [ $STATUS== 0 ];
    then
        SetFile -a E "$f"
    else
        SetFile -a e "$f"
    fi
done

그런 다음 Finder-> 서비스 환경 설정으로 이동하여 서비스에 대한 바로 가기를 추가했습니다.

 "Command + Shift + H" didn't work for me,
 "Command + H" hides the application
 so i chose "Command + Shift + E"

도움이 되길 바랍니다. =)


STATUS=라인 끝에 백 틱이 없습니다. 또한 내 Mac + XCode에서 명령 GetFileInfo에는 대문자 G가 있습니다.
bjnord

1

현재 숨겨져있는 파일 확장자를 표시하려면 추가 옵션이 있습니다. Finder는이 "확장자 숨기기"옵션을 com.apple.FinderInfo확장 파일 속성에 저장합니다. 모든 확장 된 속성을 나열하는이 명령을 실행하여 직접 확인할 수 있습니다.

xattr -l /path/to/the/file

따라서 확장을 표시하기 위해 해당 속성을 제거 할 수 있습니다.

xattr -d com.apple.FinderInfo /path/to/the/file

그러나 Finder 이 속성에 태그 색상과 같은 다른 메타 데이터를 저장 하므로이 메타 데이터가 손실됩니다. 또한 속성이 이진이므로 쉽게 수정할 수 없습니다.


0

명령 행 ( $ hideextension ~/music/somesong.mp3) 에 하나의 인수 만 갖기 위해 애플 스크립트를 쉘 스크립트로 만들 수 있습니다. #!/usr/bin/osascript다음 코드와 같이 shebang ( ) 에서 osascript를 사용할 수 있습니다. 계속하려면 :

  1. .scpt 파일에서 Applescript 코드를 테스트하십시오 => toggle_hidden_extension.scpt
  2. 확인되면 #!/usr/bin/osascript파일 시작 부분에 shebang ( )을 추가 하십시오.
  3. 파일 형식 "text"=> toggle_hidden_extension.applescript로 내보내십시오.
  4. 확장자를 .sh => toggle_hidden_extension.sh로 변경하십시오.
  5. 터미널에서 실행 가능하게 만드십시오.

    chmod u+x toggle_hidden_extension.sh
    
  6. 이제 당신은 그것을 실행할 수 있습니다 :

    ./toggle_hidden_extension.sh /path/to/myfile.mp3
    

따라서 설명하는 코드는 다음과 같습니다.

#!/usr/bin/osascript

(*
usage: toggle_hidden_extension.sh file
*)

(*
Test 1 : ./toggle_hidden_extension.sh /Users/boissonnfive/Desktop/file.txt
Test 2 : ./toggle_hidden_extension.sh
Test 3 : ./toggle_hidden_extension.sh 0fdjksl/,3
*)

on run argv
    try
        processArgs(argv)
        toggleHiddenExtension(item 1 of argv)
    on error
        return usage()
    end try

    if result then
        return "Extension hidden for " & POSIX path of (item 1 of argv)
    else
        return "Extension revealed for " & (POSIX path of (item 1 of argv))
    end if

end run


on usage()

    return "usage: toggle_hidden_extension.sh file"

end usage

on processArgs(myArgs)

    set item 1 of myArgs to POSIX file (first item of myArgs) as alias

end processArgs

on toggleHiddenExtension(myFile)

    tell application "Finder" to set extension hidden of myFile to not (extension hidden of myFile)

end toggleHiddenExtension

0

SetFileXcode 6부터 더 이상 사용되지 않더라도 XCode 11에서 계속 사용할 수 있으므로 가까운 미래를 위해 명령 줄 도구에 남아있을 것으로 기대할 수 있습니다 ...

https://download.developer.apple.com/Developer_Tools/Command_Line_Tools_for_Xcode_11/Command_Line_Tools_for_Xcode_11.dmg

$ pkgutil --payload-files /Volumes/Command\ Line\ Developer\ Tools/Command\ Line\ Tools.pkg | grep SetFile
./Library/Developer/CommandLineTools/usr/bin/SetFile
./Library/Developer/CommandLineTools/usr/share/man/man1/SetFile.1
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.