一步删除多个扩展属性(但不是全部)

一步删除多个扩展属性(但不是全部)

例如,我有一个具有三个扩展属性的文件:

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

我可以使用删除前两个

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

是我能提供的最好的(不依赖更多工具)。

相关内容