如何删除Mac OS X中文件的“扩展属性”?

我有一个运行压力testing的AppleScript脚本。 部分testing是打开,保存和closures某些文件。 不知何故,这些文件拿起了一些“扩展属性”,禁止保存文件。 这导致压力testing失败。

我如何删除扩展属性?

使用xattr命令。 您可以检查扩展属性:

 $ xattr s.7z com.apple.metadata:kMDItemWhereFroms com.apple.quarantine 

并使用-d选项删除一个扩展属性:

 $ xattr -d com.apple.quarantine s.7z $ xattr s.7z com.apple.metadata:kMDItemWhereFroms 

您还可以使用-c选项删除所有扩展属性:

 $ xattr -c s.7z $ xattr s.7z 

xattr -h将显示命令行选项,而xattr有一个手册页 。

删除单个文件上的单个属性

看到Bavarious的答案。


删除单个文件上的所有扩展属性

使用带-c标志的xattr来“清除”属性:

 xattr -c yourfile.txt 


在许多文件上删除所有扩展的属性

要recursion删除目录中所有文件的扩展属性,请将-c “clear”标志与-rrecursion标志合并:

 xattr -rc /path/to/directory 


为Mac OS X用户提示

有一个很长的空间或特殊字符的path?

打开Terminal.app并开始inputxattr -rc ,包含尾随空格,然后将文件或文件夹拖到Terminal.app窗口,它会自动添加正确的转义path。

尝试使用:

 xattr -rd com.apple.quarantine directoryname 

这需要在每个地方recursion地去除麻烦的属性。

另一种recursion方法:

 # change directory to target folder: cd /Volumes/path/to/folder # find all things of type "f" (file), # then pipe "|" each result as an argument (xargs -0) # to the "xattr -c" command: find . -type f -print0 | xargs -0 xattr -c # Sometimes you may have to use a star * instead of the dot. # The dot just means "here" (whereever your cd'd to find * -type f -print0 | xargs -0 xattr -c