1 つのステップで複数の拡張属性 (すべてではない) を削除します。

1 つのステップで複数の拡張属性 (すべてではない) を削除します。

たとえば、3つの拡張属性を持つファイルがあります。

com.apple.FinderInfo
com.apple.metadata:_kMDItemUserTags
com.apple.metadata:kMDItemFinderComment

以下を使用して最初の2つを削除できます

xattr -d com.apple.FinderInfo file.txt
xattr -d com.apple.metadata:_kMDItemUserTags file.txt

xattrしかし、私はそれを何度も呼び出さずに次のように使用したいと思います。

xattr -d \( com.apple.FinderInfo, com.apple.metadata:_kMDItemUserTags \) file.txt
xattr -d com.apple.FinderInfo -d com.apple.metadata:_kMDItemUserTags file.txt

可能ですか?

答え1

xattr -d attribute1 -d attribute2 filenameさて、サポートされている場合は実行できますかxattr?これは文書が少し間違っていることを意味しますが、getoptベースのプログラムにはしばしばこの問題があります。

テストしてみましょう:

テストするMacOSはありませんが、テストできます。xattrツールのソースソースコード、すべての機能を削除して私のバージョンLinuxでコンパイルして削除した内容を印刷します。

悲しいことに、

./xatrr -d foo -d bar foo                                                                                                                                                                               
xatrr: [Errno 2] No such file or directory: 'bar'

したがって、これはオプションではありません。

まともな:

for attr in attribute1 attribute2 do; xattr -d ${attr} filename; done

(より多くのツールに依存せず)私が提供できる最高です。

関連情報