ターミナルを介して、特定のファイルの拡張子がFinderに表示されるかどうかを変更する方法を探しています。
$ hideextension ~/music/somesong.mp3
面倒なので、Get Infoを開いてチェックボックスを変更する必要はありません。
FastScriptを使用してショートカットから呼び出すスクリプトに組み込む予定です。不快な感じがするGUIスクリプトは避けてください。これを実現する方法についてのアイデアは歓迎します。
GUIを介してこれを変更する唯一の実際の方法は、FinderでHide extensionをクリックすることですInfoウィンドウ。これをチェックすると、通常は編集できない_com.Apple.FinderInfo
_拡張属性が変更されます-少なくとも簡単にはできません。ただし、ツールを使用してそれを行うことができます。
以下が機能するためには、Finderの設定でShow all file extensionsをオフにする必要があることは明らかです。
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>
_
ありがとう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-> Services Preferencesに行き、サービスへのショートカットを追加しました。
"Command + Shift + H" didn't work for me,
"Command + H" hides the application
so i chose "Command + Shift + E"
それが役に立てば幸い。 =)
現在非表示になっているファイル拡張子を表示する場合は、もう1つのオプションがあります。Finderはこの「拡張子を非表示にする」オプションをcom.Apple.FinderInfo
拡張ファイル属性に保存します。すべての拡張属性をリストする次のコマンドを実行して、自分で確認できます。
xattr -l /path/to/the/file
したがって、拡張子を表示するには、その属性を削除できます。
xattr -d com.Apple.FinderInfo /path/to/the/file
ただし、この属性にはFinder 他のメタデータを保存 タグの色などが含まれているため、このメタデータは失われることに注意してください。また、属性はバイナリであるため、簡単に変更することはできません。
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
コマンドラインで引数を1つだけにするため($ hideextension ~/music/somesong.mp3
)、applescriptをシェルスクリプトにすることができます。 Shebangでosascriptを使用することは可能です(#!/usr/bin/osascript
)次のコードのように。続行します :
#!/usr/bin/osascript
)ファイルの先頭ターミナルで、実行可能にします。
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