読者です 読者をやめる 読者になる 読者になる

まんぼう日記

takataka's diary

Mac OS X のファイルの拡張属性を消去する

最近仕事が重なってお疲れ気味のたかたかです.今は大変やけどこの山を越えたら楽になるから,とスケジュール確認したら,次にゆっくりできそうなんはお盆….明るい未来をエサに自分を励ます作戦失敗 (^^;  なんか別の作戦考えな.

 

それはさておき.

 

大学院の授業で猫の顔画像を主成分分析する課題を出すので,その準備をしてました.PNG画像が100枚以上あるので,tar コマンドでアーカイブしたんですが,中身を確認すると

$ tar tjf hoge.tbz
catg/._blackuni3.png
catg/blackuni3.png
catg/._cat000.png
catg/cat000.png
   :

こんな感じで,hogeというファイルに対応して._hogeちゅう余計なファイルもアーカイブされちゃってます.ああ,これは OS X のファイルシステムの拡張属性のせいやなあ,ってことはわかるんやけど,どうしたらなくせるか思い出せませんでした.というわけで,調べた結果をメモ.

 

 

まず,ls -l の出力に

-rw-r--r--@ 1 takataka  staff  0  6 26 23:38 hoge

のように "@" がついているのが,拡張属性のついたファイルです.ls コマンドを -l@ オプション付きで実行すると,各ファイルについた拡張属性の内容も見ることができます.たとえば,Finder で「タグ」(昔は「ラベル」と言ってた,赤や青の色をつけることができるやつ)をつけると,こんなんなりました.

$ touch hoge     「空のファイルを作成」
$ ls -l@ hoge
-rw-r--r--  1 takataka  staff  0  6 26 23:40 hoge   「この時点では拡張属性ついてない」
「ここで Finder で赤色のタグをつける」
$ ls -l@ hoge
-rw-r--r--@ 1 takataka  staff  0  6 26 23:40 hoge
	com.apple.FinderInfo	32 
	com.apple.metadata:_kMDItemUserTags	55 

それから,xattr というコマンドで,拡張属性を表示したりいじったりできます(cf. man xattr).

$ xattr hoge   「ついてる拡張属性を表示」
com.apple.FinderInfo
com.apple.metadata:_kMDItemUserTags
$ xattr -d com.apple.FinderInfo hoge   「個々の拡張属性を削除」
$ xattr -d com.apple.metadata:_kMDItemUserTags hoge
「これら2つの属性を両方削除したら,Finder上の赤いタグが消えた」

xattr コマンドで -c オプションを使うと,すべての拡張属性をまとめて削除できます.-r を併用すると,ディレクトリを再帰的に下って指定した所以下のファイル/ディレクトリすべての拡張属性を削除できます.

 

というわけで,xattr -c -r  「ディレクトリ」 で ok なはずでしたが,一つ落とし穴が.Dropbox で同期してるディレクトリ内で試したら,いっこうに @ がとれへんのですな.なんでやね〜ん,ってしばらく悩んだんですが,xattr したら合点がいきました.

$ xattr hoge
com.dropbox.attributes

とかなってて,これが削除でけへん(というか,たぶん削除した直後に自動で再付与されてる)のですな.Dropbox で同期してるフォルダを Finder で見た時に表示される,小さな丸いマーク(同期中やと青,同期完了してたら緑に白のチェックマーク),あれの情報を拡張属性で扱ってるようですね.拡張属性って,Apple 以外のひとも自由に付けたりできるってことかしらん.

 

まあそういうわけで,Dropbox フォルダの外で作業したら,拡張属性を除いたファイルアーカイブを無事作ることができました.

 

おまけ:

f:id:takatakamanbou:20150626223321j:plain

例によってX登校プチルートを走るたかたか ==> ん? ロープ? ==> ちゃぅぁあ,と急停止するたかたか,身じろぎもせず悠然とした構えのへびさん.大人の身長と同じかそれ以上の長さありそう.しばらく様子を伺ってみましたが,道を譲ってもらえそうにありません.自動車通れへん狭い道で,避けようもないので,あきらめて回り道しました.

 

ということが先週土曜にありました.記事にする機会がなかったので,無理矢理ここで (^^;  って,だらだらこんな記事書いてるくらいやから,お疲れ気味とか言うても実は大したことないですな.