我正在寻找一种通过终端的方式来更改是否在Finder中显示特定文件的扩展名,具体方法如下:
$ hideextension ~/music/somesong.mp3
无需打开获取信息并更改复选框,因为它非常繁琐。
我计划将其合并到我使用FastScripts通过快捷方式调用的脚本中。我想尝试避免使用GUI脚本,因为这感觉很不干净,尽管任何有关如何实现此目的的想法都值得欢迎。
我正在寻找一种通过终端的方式来更改是否在Finder中显示特定文件的扩展名,具体方法如下:
$ hideextension ~/music/somesong.mp3
无需打开获取信息并更改复选框,因为它非常繁琐。
我计划将其合并到我使用FastScripts通过快捷方式调用的脚本中。我想尝试避免使用GUI脚本,因为这感觉很不干净,尽管任何有关如何实现此目的的想法都值得欢迎。
Answers:
通过GUI更改此设置的唯一真实方法是在“ Finder 信息”窗口中单击“ 隐藏扩展名 ” 。选中此选项将更改扩展属性,您通常无法编辑该扩展属性,至少不容易。但是,我们可以使用工具为我们做到这一点。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
。
感谢slhck 的回答,它帮了我很多忙,完成了我想做的事情。
因此,由于我喜欢快捷方式,因此我通过Automator创建了“运行Shell脚本”服务。
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
的首
为了在命令行($ hideextension ~/music/somesong.mp3
)上仅包含一个参数,可以使applescript成为shell脚本。#!/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