OS Xコマンドラインを使用したファイルの拡張子の表示/非表示


21

私は、ターミナルを介して、特定のファイルの拡張子がFinderに表示されるかどうかを変更する方法を探しています。

$ hideextension ~/music/somesong.mp3

「情報を見るを開いてチェックボックスを変更する必要はありません。これは非常に面倒です。

FastScriptsを使用するショートカットを使用して、呼び出しているスクリプトにそれを組み込む予定です。GUIスクリプトが汚れているように感じられるため、GUIスクリプトの使用を避けたいと思いますが、これを達成する方法についてのアイデアは歓迎します。


それが違いを生む場合、私はライオンでこれを達成しようとしています。
joshua.thomas.bird

回答:


24

GUIを介してこれを変更する唯一の実際の方法は、Finder 情報ウィンドウで拡張機能隠すをクリックすることです。これをチェックすると、通常は編集できない拡張属性が変更されます-少なくとも簡単ではありません。ただし、ツールを使用して実行できます。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>

厳密に言えば、ファイルではなくエイリアスです。ここでは、コマンドラインからAppleScriptを使用する方法は次のとおりです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
ダニエルベック

1
もちろんです。完全なAppleScriptイベントを追加しました。将来的には、答えに重要なものを追加してください。いつでも歓迎します。
slhck

1
ありがたいことに、私はXcodeのがインストールされているとSetFileはトリックを:-)でした私が探していただけで何...
thandasoru

SetFileXcode 6以降では非推奨です。また、マニュアルページへのリンクの有効期限が切れています。
フランクリンゆう

@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-> Services Preferencesに移動し、サービスへのショートカットを追加しました。

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

それが役に立てば幸い。=)


STATUS=行は末尾にバックティックが欠落しています。また、私のMac + XCodeでは、コマンドGetFileInfoの大文字はGです。
bjnord15年

1

現在非表示になっているファイル拡張子を表示する場合、もう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)に1つの引数のみを持たせるために、AppleScriptをシェルスクリプトにすることができます。#!/usr/bin/osascript次のコードのように、シバング()でosascriptを使用できます。続行します :

  1. .scptファイルでAppleScriptコードをテストする=> toggle_hidden_​​extension.scpt
  2. OKの場合#!/usr/bin/osascript、ファイルの先頭にシェバン()を追加します
  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.