ふみぃ~.何だか虚しい・・・
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
Date:--/--/--(--) --:--:--
スポンサー広告 | Edit |
今回はMac OS Xの拡張属性を再帰的に消去する方法です.
前回のときは速攻でFinderから不可視属性ファイルを検索して消す方が楽ちんだということが判明してしまいましたので,(よく分からないけど)今度こそ!

拡張属性っていうのはリソースフォークなどを格納したデータで,ターミナルでls -l@と入力するとどんな拡張属性がついてるか見ることが出来ます.

例えば,テキストファイルにはエンコーディングの情報を書き込んだcom.apple.TextEncoding,ディスクイメージファイルにはチェックサムを書き込んだcom.apple.diskimages.recentcksum,ブラウザを含むネットワークからダウンロードしたファイルにはcom.apple.quarantineとcom.apple.metadata:kMDItemWhereFromsなど.

で,これがくっついてるファイルやフォルダをWindowsに持って行ったりすると,こいつがオリジナルのファイルとは別に“._”で始まるゴミファイルに変身します.

それなりに長いので続きは下で...
単に,あるファイルの拡張属性(下の例はcom.apple.TextEncoding)を消去するだけなら,以下のコマンドでOK.

xattr -d com.apple.TextEncoding [Target File or Directory]


だけどxattrには-rオプションなどないので,これを再帰的に処理するためには

find . -print0 | xargs -0 xattr -d com.apple.TextEncoding 2>/dev/null


とします.
xargsにパイプせずに-execオプションを付ける方法もあるのですが,

find . -exec xattr -d com.apple.TextEncoding {} \; 2>/dev/null


とか

find . -exec xattr -d com.apple.TextEncoding {} + 2>/dev/null


上だとファイルを1つずつ処理するので階層が深いときにはかなり遅くなり,下はLeopardまでは動いていたのにSnow Leopardでは途中で止まったりしました.

ただし,com.apple.TextEncoding程度なら消してしまっても問題なくファイルが開けますが,com.apple.FinerInfoを消すとラベルで色を付けた情報がなくなったり,エイリアスが白紙ファイルになったりしますし,com.apple.diskimages.recentcksumがなくなるとイメージファイルを開くときに少し時間がかかります.
まだMac OS Xで扱う予定のあるファイルは消さない方が無難です.

そんなことはお構いなしに,カレントディレクトリ以下の全ての拡張属性を再帰的に消去したいときはには,これ.

for attr in $(ls -lR@ | grep '^[^a-zA-Z\.\-]' | awk '{print $1}' | sort | uniq); do echo "Delete: $attr"; find . -print0 | xargs -0 xattr -d $attr 2>/dev/null; done


かなり長いですが,ターミナルにすべてをコピペしてリターンを押すか,適当なところに\(本当はバックスラッシュ)を入れて改行してください.

一応,消し去る拡張属性を表示するようにはしてますが,リターンを押してしまったら最後有無を言わさず全部消え去ります.

念のためにもう一度書いておきますが,実行する前にカレントディレクトリを確認してください.
不用意に自分のホームフォルダなどで実行すると,エイリアスなどが全部使えなくなりますので.

特別なコマンドは何もないのでLeopardでも動くような気がしますが,確認をとったのはSnow Leopardのみです.
Leopardで使うときには最初支障のないところで試してみてください.

これを言っちゃあ元も子もないけど,Windows上で“._”から始まるファイルを全部消すのが一番早かったりして...

まぁ,良いんです.
ホントはfindとxargsのコンボが速くて便利っていうことと,同等のことをするために-execの最後を+にするとSnow Leopardではなぜか上手く動かなかったりするっていうメモだったりするので...

<追記(2009/12/9)>
いま気付きました.
Mac OS X 10.6 Snow Leopardのxattrは-rオプションが使えて,なんのことはなくfindを使わなくても再帰的に処理出来るのであった.orz
Date:2009/12/07(Mon) 14:23:45
Macintosh | Edit | Comment:0 | Trackback:0
Comment
Posted Comment
Comment to This Entry
URL:
Comment:
Pass:
Secret: 管理者にだけ表示を許可する
 
Trackback
Trackback URL
http://doubleko.blog18.fc2.com/tb.php/4162-bfdac4b1
この記事にトラックバックする(FC2ブログユーザー)
Trackback

Powered by FC2. Designed by Double KO.
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。