シェルスクリプトからOS XのFinderでの色でのファイルへのタグ付け

StackOverflow https://stackoverflow.com/questions/2435580

  •  19-09-2019
  •  | 
  •  

質問

一つは、Mac OS XのFinderでの色でのファイルとフォルダにタグを付けることができます。 シェルスクリプトからこれを行う方法はありますか?

役に立ちましたか?

解決

このシェルスクリプトは、2番目の引数として最初の引数とラベル指数(無ラベル0、赤1、...、グレーの7)と、ファイルまたはフォルダの名前をとります。

#!/bin/sh
osascript -e "tell application \"Finder\" to set label index of alias POSIX file \"`cd -P -- "$(dirname -- "$1")" && printf '%s\n' "$(pwd -P)/$(basename -- "$1")"`\" to $2"

$ファイル名がある場合はより直接的に、ファイルまたはフォルダの絶対パス名でシェル変数が標識され、$ラベルは、ラベルインデックス番号を持つシェル変数であることには、

osascript -e "tell application \"Finder\" to set label index of alias POSIX file \"$filename\" to $label"

シェルコマンドは、ファイルまたはフォルダにラベルを割り当てることです。

他のヒント

ここで私が書いた迅速なPythonスクリプトです

https://github.com/danthedeckie/finder_colorsする

コマンドラインからフォルダやファイルの色を設定する。

使用方法:

finder_colors.py red /Users/daniel/src

赤であることを/ユーザ/ダニエル/ srcディレクトリを設定します。

finder_colors.py /Users/daniel/src

(ここで今、「赤」)色を返します。あなたはPythonスクリプトを書いている場合は、モジュールとしてfinder_colorsをインポートして、直接(finder_colors.get(...)、およびfinder_colors.set(...)を使用することができます。

ここでの応答に基づいて、参照記事では、私は次の関数を作り、私の~/.bash_profileファイルに追加します:

# Set Finder label color
label(){
  if [ $# -lt 2 ]; then
    echo "USAGE: label [0-7] file1 [file2] ..."
    echo "Sets the Finder label (color) for files"
    echo "Default colors:"
    echo " 0  No color"
    echo " 1  Orange"
    echo " 2  Red"
    echo " 3  Yellow"
    echo " 4  Blue"
    echo " 5  Purple"
    echo " 6  Green"
    echo " 7  Gray"
  else
    osascript - "$@" << EOF
    on run argv
        set labelIndex to (item 1 of argv as number)
        repeat with i from 2 to (count of argv)
          tell application "Finder"
              set theFile to POSIX file (item i of argv) as alias
              set label index of theFile to labelIndex
          end tell
        end repeat
    end run
EOF
  fi
}

これを行う一つの醜い方法は以下のようになります:

exec osascript <<\EOF
tell app "Finder"

    -- [...]
    -- selecting the file
    -- [...]

    -- 4 is Blue
    set label index of thisItem to 4
end tell

基本的に色を設定するファインダを使用AppleScriptを起動します。

私はからヒントを得ました

(カラー) http://www.macosxhints.com/article.php?物語= 20070602122413306する

(シェル) http://www.macosxhints.com/article.php?物語= 20040617170055379する

osxutils のパッケージのコマンドラインツール「setlabel」もあります。これは、AppleScriptを必要としないか、Finderが実行されていること。

これは、ファインダとしての色について同じ順序を使用することになります。

#!/bin/bash

if [[ $# -le 1 || ! "$1" =~ ^[0-7]$ ]]; then
  echo "Usage: label 01234567 file ..." 1>&2
  exit 1
fi

colors=( 0 2 1 3 6 4 5 7 )
n=${colors[$1]}
shift

osascript - "$@" <<END > /dev/null 2>&1
on run arguments
tell application "Finder"
repeat with f in arguments
set f to (posix file (contents of f) as alias)
set label index of f to $n
end repeat
end tell
end
END
私は10.8に2012-09-06 13:50:00.965 osascript[45254:707] CFURLGetFSRef was passed this URL which has no scheme (the URL may not work with other CFURL routines): test.txtのような警告を得たので

私は、STDERRをリダイレクトしています。 osascriptを、最後の式の値を出力しますので、STDOUTがリダイレクトされます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top