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

时间:2011-01-28 21:04:52

标签: macos attributes

我有一个运行压力测试的AppleScript脚本。部分测试是打开,保存和关闭某些文件。不知何故,文件已经选择了一些禁止文件保存的“扩展属性”。这导致压力测试失败。

如何删除扩展属性?

5 个答案:

答案 0 :(得分:355)

使用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 has a man page

答案 1 :(得分:95)

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

见Bavarious的答案。


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

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

xattr -c yourfile.txt


<小时/>

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

要递归删除目录中所有文件的扩展属性,请将-c“clear”标志与-r递归标记结合使用:

xattr -rc /path/to/directory



适用于Mac OS X用户的提示

有一个带空格或特殊字符的长路径吗?

打开Terminal.app并开始输入xattr -rc,包含尾随空格,然后将文件或文件夹拖到Terminal.app窗口,它会自动添加完整路径并正确转义

答案 2 :(得分:20)

尝试使用:

xattr -rd com.apple.quarantine directoryname

这需要在任何地方递归删除pesky属性。

答案 3 :(得分:7)

另一种递归方法:

# 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

答案 4 :(得分:1)


答案(单个文件)


1。展示要在选择中使用的键。

xattr ~/Desktop/screenshot\ 2019-10-23\ at\ 010212.png
    # com.apple.FinderInfo
    # com.apple.lastuseddate#PS
    # com.apple.metadata:kMDItemIsScreenCapture
    # com.apple.metadata:kMDItemScreenCaptureGlobalRect
    # com.apple.metadata:kMDItemScreenCaptureType

2。选择要删除的密钥。

xattr -d com.apple.lastuseddate#PS ~/Desktop/screenshot\ 2019-10-23\ at\ 010212.png
xattr -d kMDItemIsScreenCapture ~/Desktop/screenshot\ 2019-10-23\ at\ 010212.png

3。再次展示密钥以查看它们已被删除。

xattr -l ~/Desktop/screenshot\ 2019-10-23\ at\ 010212.png
    # com.apple.FinderInfo
    # com.apple.metadata:kMDItemScreenCaptureGlobalRect
    # com.apple.metadata:kMDItemScreenCaptureType

4。最后,删除特定文件的所有键

xattr -c ~/Desktop/screenshot\ 2019-10-23\ at\ 010212.png

答案(目录中的所有文件)


1。展示要在选择中使用的键。

xattr -r ~/Desktop

2。删除目录中每个文件的特定密钥

xattr -rd com.apple.FinderInfo ~/Desktop

3。删除目录中每个文件上的所有键

xattr -rc ~/Desktop
  

警告:删除这些内容后,您将无法将它们找回来!
   故障错误:没有撤消操作。


错误


我想解决人们正在遇到的错误。 因为错误也使我发疯... 在Mac上,如果您在python中安装了xattr,则您的环境可能有问题。

  

我的Mac上有xattr的两条不同路径

type -a xattr

    # xattr is /usr/local/bin/xattr    # PYTHON Installed Version
    # xattr is /usr/bin/xattr          # Mac OSX Installed Version

因此在示例之一中,-c在xargs中不起作用是因为在bash中,您默认使用非python版本。

使用-c

/usr/bin/xattr -c

不适用于-c

/usr/local/bin/xattr -c
    # option -c not recognized

我的Shell /终端默认为/ usr / local / bin / xattr,因为我的$PATH /usr/local/bin:/usr/bin:之前,我认为这是默认设置。

我可以证明这一点,因为,如果您尝试卸载python xattr,则会看到:

pip3 uninstall xattr
Uninstalling xattr-0.9.6:
  Would remove:
    /usr/local/bin/xattr
    /usr/local/lib/python3.7/site-packages/xattr-0.9.6.dist-info/*
    /usr/local/lib/python3.7/site-packages/xattr/*
Proceed (y/n)?

解决方法


修复option -c not recognized错误。

  1. 卸载任何您可能拥有的Python xattrpip3 uninstall xattr
  2. 关闭所有Terminal窗口并退出Terminal
  3. 重新打开一个新的Terminal窗口。
  4. 重新运行xattr命令,它现在应该可以正常工作。

OR

  

如果您想保留Python xattr,请使用

/usr/bin/xattr

对于Shell中的任何Terminal命令


示例:


Python的xattr版本根本无法处理图片:

Good-Mac:~ JayRizzo$ xattr ~/Desktop/screenshot\ 2019-10-23\ at\ 010212.png
    # com.apple.FinderInfo
    # Traceback (most recent call last):
    #   File "/usr/local/bin/xattr", line 8, in <module>
    #     sys.exit(main())
    #   File "/usr/local/lib/python3.7/site-packages/xattr/tool.py", line 196, in main
    #     attr_value = attr_value.decode('utf-8')
    # UnicodeDecodeError: 'utf-8' codec can't decode byte 0xb0 in position 2: invalid start byte

Good-Mac:~ JayRizzo$ /usr/bin/xattr ~/Desktop/screenshot\ 2019-10-23\ at\ 010212.png
    # com.apple.FinderInfo
    # com.apple.lastuseddate#PS
    # com.apple.metadata:kMDItemIsScreenCapture
    # com.apple.metadata:kMDItemScreenCaptureGlobalRect
    # com.apple.metadata:kMDItemScreenCaptureType

手册页

MAN PAGE for OSX xattr

MAN PAGE for Python xattr VERSION 0.6.4

  

注意:我无法找到当前版本0.9.6的python帮助页面

感谢您的阅读!