递归的 xattr 失败得很严重。
递归的 xattr 失败得很严重。
我一直在尝试找到一种递归删除某些文件的所有xattr
的方法,然而,以前的一些方法似乎不再有效了;也许有一个新加入的错误?
$ xattr -rc . option -r not recognized $ xattr -c . option -c not recognized
……现在是压轴好戏!
$ find . -exec xattr -l {} \; com.apple.FinderInfo: Traceback (most recent call last): File "/usr/local/bin/xattr", line 11, in sys.exit(main()) File "/Library/Python/2.7/site-packages/xattr/tool.py", line 200, in main print(_dump(attr_value)) File "/Library/Python/2.7/site-packages/xattr/tool.py", line 77, in _dump printable = s.translate(_FILTER) TypeError: character mapping must return integer, None or unicode
哦,看,它在混乱中找到了一个xattr
……很有趣,想知道是什么或谁破坏了这么严重的xattr
工具。我只需要递归删除扩展属性就好了!
admin 更改状态以发布 2023年5月23日
我也遇到了这个问题,我相信这是由于我的$PATH
造成的。
/usr/local/bin:/usr/bin
我的用户本地bin
排在系统usr/bin
之前。
感谢这些帖子,我找到了问题所在。
xattr安装在两个位置。
显示目标是内置、函数、别名还是外部可执行文件。(来源) /
type -a xattr # xattr is /usr/local/bin/xattr # xattr is /usr/bin/xattr
它们肯定不同。
/usr/local/bin/xattr -h usage: xattr [-slz] file [file ...] xattr -p [-slz] attr_name file [file ...] xattr -w [-sz] attr_name attr_value file [file ...] xattr -d [-s] attr_name file [file ...] The first form lists the names of all xattrs on the given file(s). The second form (-p) prints the value of the xattr attr_name. The third form (-w) sets the value of the xattr attr_name to attr_value. The fourth form (-d) deletes the xattr attr_name. options: -h: print this help -s: act on symbolic links themselves rather than their targets -l: print long format (attr_name: attr_value) -z: compress or decompress (if compressed) attribute value in zip format
V.S.
/usr/bin/xattr -h usage: xattr [-l] [-r] [-s] [-v] [-x] file [file ...] xattr -p [-l] [-r] [-s] [-v] [-x] attr_name file [file ...] xattr -w [-r] [-s] [-x] attr_name attr_value file [file ...] xattr -d [-r] [-s] attr_name file [file ...] xattr -c [-r] [-s] file [file ...] The first form lists the names of all xattrs on the given file(s). The second form (-p) prints the value of the xattr attr_name. The third form (-w) sets the value of the xattr attr_name to the string attr_value. The fourth form (-d) deletes the xattr attr_name. The fifth form (-c) deletes (clears) all xattrs. options: -h: print this help -l: print long format (attr_name: attr_value and hex output has offsets and ascii representation) -r: act recursively -s: act on the symbolic link itself rather than what the link points to -v: also print filename (automatic with -r and with multiple files) -x: attr_value is represented as a hex string for input and output
所以,如果你出于任何原因都想保留这两个,那么你可以像这样显式地调用它们:
/usr/bin/xattr -lr ~ /usr/local/bin/xattr -l ~
您的电脑似乎安装了一个非标准的 xattr
命令在 /usr/local/bin/xattr 目录下(macOS 默认的是 /usr/bin/xattr)。因为这些是 Python 错误,所以可能是这个 这个。无论如何,它的语法与标准版不同,因此安装它会导致混淆。我建议您将其删除或重命名为独特的名称,否则它可能会破坏任何尝试使用 xattr
的脚本(您自己或系统的脚本)。