首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从Linux上的文件中删除com.apple.quarantine

从Linux上的文件中删除com.apple.quarantine
EN

Stack Overflow用户
提问于 2014-04-05 08:28:29
回答 2查看 2.1K关注 0票数 0

用户不时上传带有"com.apple.quarantine“标签的文件。我认为,当用户从互联网上下载了一个文件到他的计算机上时,就增加了这个功能。

我的问题是,如果我在Linux上,如何从文件中删除它?

谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-04-05 10:30:49

使用setfattr。在linux上,扩展属性应该位于“user”中。命名空间(您的里程可能有所不同):

代码语言:javascript
复制
setfattr -x 'user.com.apple.quarantine' file1 [ file2 [ ... ] ]

不幸的是,-xattr谓词还没有进入GNU,因此处理一个完整的层次结构需要一种蛮力和无知的方法,如下所示:

代码语言:javascript
复制
cd /path/to/search

errors=/var/tmp/setfattr.errors

find . -exec setfattr -x 'user.com.apple.quarantine' {} + 2> "$errors"

在此之后,$errors文件应该只包含没有相关属性的文件的条目:

代码语言:javascript
复制
grep -v 'No such attribute' -- "$errors"
票数 2
EN

Stack Overflow用户

发布于 2014-04-05 17:07:01

代码语言:javascript
复制
touch /tmp/com.apple.quarantine.test1
touch /tmp/com.apple.quarantine.test2

然后运行以下代码。

代码语言:javascript
复制
for f in $(find /tmp/ -type f|grep -i 'com.apple.quarantine');
do
        OLD_NAME=$(echo $f|awk -F "/" '{print $NF'})
        NEW_NAME=$(echo $OLD_NAME|sed "s/com\.apple\.quarantine\.//g")
        echo $NEW_NAME
        DIR_NAME=$(dirname $f)
        cd $DIR_NAME
        mv "$OLD_NAME" "$NEW_NAME"
done

现在只有test1test2在/tmp文件下。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22878482

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档