터미널을 통해 특정 파일의 확장자가 Finder에 표시되는지 여부를 변경하는 방법을 찾고 있습니다.
$ hideextension ~/music/somesong.mp3
정보 를 열거 나 확인란을 변경 하지 않아도 매우 지루합니다.
FastScripts를 사용하여 바로 가기를 통해 호출하는 스크립트에 통합 할 계획입니다. 이 작업을 수행하는 방법에 대한 아이디어는 환영하지만 GUI 스크립팅을 사용하지 않는 것이 좋습니다.
터미널을 통해 특정 파일의 확장자가 Finder에 표시되는지 여부를 변경하는 방법을 찾고 있습니다.
$ hideextension ~/music/somesong.mp3
정보 를 열거 나 확인란을 변경 하지 않아도 매우 지루합니다.
FastScripts를 사용하여 바로 가기를 통해 호출하는 스크립트에 통합 할 계획입니다. 이 작업을 수행하는 방법에 대한 아이디어는 환영하지만 GUI 스크립팅을 사용하지 않는 것이 좋습니다.
답변:
GUI를 통해이를 변경하는 유일한 방법 은 Finder Info 윈도우 에서 Hide extension 을 클릭 하는 것 입니다. 이를 확인하면 확장 속성 이 변경 되는데, 일반적으로 편집 할 수없는 확장 속성은 최소한 쉽지 않습니다. 그러나 도구를 사용하여이를 수행 할 수 있습니다.com.apple.FinderInfo
아래가 작동하려면 Finder의 환경 설정에서 모든 파일 확장자 표시를 선택 해제 해야합니다 .
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
.
SetFile
Xcode 6 부터 사용되지 않습니다 . 또한 매뉴얼 페이지 링크가 만료되었습니다.
귀하의 답변에 대한 감사 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가 있습니다.
현재 숨겨져있는 파일 확장자를 표시하려면 추가 옵션이 있습니다. Finder는이 "확장자 숨기기"옵션을 com.apple.FinderInfo
확장 파일 속성에 저장합니다. 모든 확장 된 속성을 나열하는이 명령을 실행하여 직접 확인할 수 있습니다.
xattr -l /path/to/the/file
따라서 확장을 표시하기 위해 해당 속성을 제거 할 수 있습니다.
xattr -d com.apple.FinderInfo /path/to/the/file
그러나 Finder 는 이 속성에 태그 색상과 같은 다른 메타 데이터를 저장 하므로이 메타 데이터가 손실됩니다. 또한 속성이 이진이므로 쉽게 수정할 수 없습니다.
명령 행 ( $ hideextension ~/music/somesong.mp3
) 에 하나의 인수 만 갖기 위해 애플 스크립트를 쉘 스크립트로 만들 수 있습니다. #!/usr/bin/osascript
다음 코드와 같이 shebang ( ) 에서 osascript를 사용할 수 있습니다. 계속하려면 :
#!/usr/bin/osascript
파일 시작 부분에 shebang ( )을 추가 하십시오.터미널에서 실행 가능하게 만드십시오.
chmod u+x toggle_hidden_extension.sh
이제 당신은 그것을 실행할 수 있습니다 :
./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
SetFile
Xcode 6부터 더 이상 사용되지 않더라도 XCode 11에서 계속 사용할 수 있으므로 가까운 미래를 위해 명령 줄 도구에 남아있을 것으로 기대할 수 있습니다 ...
$ 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