ターミナルでファイルのカラーラベルをある色に設定する方法はありますか?
次のコマンドを実行すると、現在の色についての情報がいくつか表示されますが、それをどう処理するかわかりません。それを変えるように。
mdls -name kMDItemFSLabel somefile.ext
私が知りたいのは、特定のタイプのフォルダー内のすべてのファイルに特定のカラーラベル(私の場合は灰色)を再帰的にマークするためです。
私は発見の仕方を知っています:
find . -name "*.ext"
そして、-exec
を使用して各ファイルに対して後でコマンドを実行する方法を知っていますが、実際のラベル付けを行う方法を知る必要があります...
Mac OS Xに組み込まれているコマンドのみを含むソリューションが欲しいので、他に方法がない限り、サードパーティのものはできません。
ここと参照された投稿の応答に基づいて、次の関数を作成し、それを〜/ .bash_profileファイルに追加しました。
#Finderラベルの色を設定 label(){ if [$#-lt 2]; then echo "使用法:ラベル[0-7] file1 [file2] ..." echo "ファイルのFinderラベル(色)を設定します" echo "デフォルトの色: " echo" 0 No color " echo" 1 Orange " echo" 2 Red " echo" 3 Yellow " echo" 4ブルー " エコー" 5パープル " エコー" 6グリーン " エコー" 7グレー " その他 osascript-" $ @ " << EOF 実行時にargv labelIndexを(argvの項目1を数値として) iを2から(argvのカウント) まで繰り返してアプリケーションに通知"Finder" theFile to POSIX file(item i of argv)as alias set the file index of theFile [label _ end tell end repeat 実行を終了 EOF fi }
Mosaricks AppleScriptではosascriptメソッドが壊れているように見えますが、これは機能するようです。
xattr -wx com.Apple.FinderInfo "0000000000000000000C00000000000000000000000000000000000000000000" /path/to/your/file
Mavericksでは、これはファイルラベルを以前のものとマージするようになり(現在は「タグ」となっているため)、同じトークンでAppleこのようにして、usinf拡張属性を停止しますが、これは私にとって今すぐ機能し、ASよりもはるかに高速であるという利点があります。
@Lauriと@Robertの2つに基づいた私のバージョンを以下に示します。番号ではなく、色の名前を使用して色を指定します。色名はhfsdata -L
の出力と一致しているため、「なし」を使用してファイルに色を割り当てません。これを「setlabel」というファイルに保存し、chmod 755 setlabel
を実行します。
#!/bin/bash
# Set Finder label color
if [ $# -lt 2 ]; then
echo "USAGE: setlabel color file1 [file2] ..."
echo "Sets the Finder label (color) for files"
echo "Possible colors: None Orange Red Yellow Blue Purple Green Gray"
else
labelargs=$@
color=$1
file=$2
colorarray=( None Orange Red Yellow Blue Purple Green Gray )
colorvalue=8
for i in {0..7}
do
if [ "${color}" == ${colorarray[${i}]} ]
then
colorvalue=${i}
fi
done
if [ "${colorvalue}" == "8" ]
then
echo Color ${color} is not recognized.
echo "Possible colors: None Orange Red Yellow Blue Purple Green Gray"
else
osascript - ${colorvalue} ${file} << EOF >/dev/null 2>&1
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
fi
osascript -e "POSIXファイル(\"/junk.txt\")のラベルインデックスを1に設定するように「アプリ\" Finder\"に伝える」
これは、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 app "Finder"
repeat with f in arguments
set f to (posix file (contents of f) as alias)
set label index of f to $n
end
end
end
END
相対パスをエイリアスに変換すると、次のような警告が表示されるため、stderrがリダイレクトされます CFURLGetFSRefに、スキームのないこのURLが渡されました 10.8。 osascriptは最後の式の値を出力するため、stdoutはリダイレクトされます。
私はこれらのスクリプトが大好きですが、スクリプト内でbashのIFS設定を変更するまで、名前にスペースを使用したファイルでは機能しませんでした。また、ファイル入力を変更して、ファイル名のリストを含むテキストファイルを受け入れるようにしました。
#!/bin/bash
# Set Finder label color of files in a list
# set the Internal Field Separator to \n (newline)
IFS=$'\n'
if [ $# -lt 2 ]; then
echo "USAGE: LabelFilelist color Path/to/filelist ..."
echo "Sets the Finder label (color) for files"
echo "Possible colors: None Orange Red Yellow Blue Purple Green Gray"
else
labelargs=$@
color=$1
file=`cat < $2`
colorarray=( None Orange Red Yellow Blue Purple Green Gray )
colorvalue=8
for i in {0..7}
do
if [ "${color}" == ${colorarray[${i}]} ]
then
colorvalue=${i}
fi
done
if [ "${colorvalue}" == "8" ]
then
echo Color ${color} is not recognized.
echo "Possible colors: None Orange Red Yellow Blue Purple Green Gray"
else
osascript - ${colorvalue} ${file} << EOF >/dev/null 2>&1
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
fi
コマンドラインから呼び出すことができるapplescriptを使用してそれを行う方法を説明する2つの記事を次に示します。
ターミナルまたはapplescriptを使用してカラーラベルを設定する方法
そして
シェルスクリプトからのos-x Finderでのファイルの色付け 。