Как удалить «расширенные атрибуты» для файла в Mac OS X? - PullRequest
239 голосов
/ 29 января 2011

У меня есть AppleScript скрипт, который запускает стресс-тест.Частью теста является открытие, сохранение и закрытие определенных файлов.Каким-то образом файлы подобрали некоторые «расширенные атрибуты», которые запрещают сохранение файлов.Это приводит к сбою стресс-теста.

Как удалить расширенные атрибуты?

Ответы [ 4 ]

362 голосов
/ 29 января 2011

Используйте 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 имеет справочную страницу .

97 голосов
/ 05 июля 2013

Удаление одного атрибута в одном файле

См. Ответ Бавариуса.


Чтобы удалить все расширенные атрибуты в одном файле

Используйте xattr с флагом -c для «очистки» атрибутов:

xattr -c yourfile.txt



Чтобы удалить все расширенные атрибуты во многих файлах

Чтобы рекурсивно удалить расширенные атрибуты для всех файлов в каталоге, объедините флаг -c «очистить» с рекурсивным флагом -r:

xattr -rc /path/to/directory



Совет для пользователей Mac OS X

Есть длинный путь с пробелами или специальными символами?

Откройте Terminal.app и начните вводить xattr -rc, включите завершающий пробел, затем перетащите файл или папку в окно Terminal.app, и он автоматически добавит полный путь с правильным экранированием.

20 голосов
/ 25 марта 2013

Попробуйте использовать:

xattr -rd com.apple.quarantine directoryname

Это обеспечивает рекурсивное удаление атрибута надоедливого везде.

7 голосов
/ 22 сентября 2015

Еще один рекурсивный подход:

# 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...