В Mac OS X / macOS вы можете выбрать файл в Finder, нажать «Информация», затем щелкнуть значок и вставить любое изображение/значок из буфера обмена. Теперь этот файл имеет собственный значок, сделанный из этого изображения.
Чтобы удалить его, обычный способ — выбрать файл, нажать «Информация», выбрать пользовательский значок, затем нажать, deleteи пользовательский значок удаляется, восстанавливая значок по умолчанию.
Есть ли способ удалить эти пользовательские значки из этих файлов, не открывая окно Finder? Например, с помощью команды терминала?
Файл имеет поврежденный пользовательский значок, открытие Finder в этой папке приводит к тому, что Finder сбивается с толку, а жесткий диск сходит с ума. Но я по-прежнему могу получить доступ к содержимому папки и этому файлу из командной строки, если сначала не открою окно Finder. Поэтому я думаю, что мне «просто» нужно по-другому обращаться к метаданным, чтобы удалить пользовательский значок.
Для файлов с пользовательским значком macOS записывает данные значка в файл в виде ответвления ресурса . Используйте команду в следующей форме:xattr
xattr -d com.apple.ResourceFork /path/to/filename
Для получения дополнительной информации о xattr
команде введите в Терминале следующую команду и нажмите:enter
man xattr
Или просто введите xattr
, а затем щелкните правой кнопкой мыши и выберите: Открыть справочную страницу
Для папок с пользовательским значком в Терминале измените каталог на папку , содержащую пользовательский значок , например:
cd /path/to/foo
Оказавшись в каталоге , используйте следующую команду , чтобы удалить пользовательский значок :
rm Icon?
Обратите внимание, что вы также можете просто использовать:
rm /path/to/foo/Icon?
Однако вы не можете использовать кавычки , одинарные или двойные, если имя пути содержит пробелы и должно отделяться от пробелов обратной косой чертой , \
например:
rm /path/to/foo\ bar/Icon?
Цитирование имени пути просто вернет следующую ошибку:
: No such file or directory
По умолчанию Icon?
это скрытый файл, а ?
in Icon?
на самом деле является \n
символом перевода строки.
Альтернативой является использование SetFile
для отключения бита «пользовательского значка» файла:
SetFile -a c /path/to/file
Одно различие между этим и xattr -d com.apple.ResourceFork
состоит в том, что xattr -d
данные изображения уничтожаются в ответвлении ресурсов файла, а SetFile
данные остаются на месте. Если вы оставите данные на месте, вы можете восстановить пользовательский значок позже, например:
SetFile -a C /path/to/file # note the lettercase
Если вы хотите, вы можете извлечь пользовательский значок в отдельный файл, прежде чем полностью удалить его из файла:
DeRez -only icns /path/to/file > extracted.rsrc
(Обратите внимание, что это копирует данные. Вам все равно нужно будет удалить встроенный значок, используя xattr
.)
Я также должен отметить, что xattr -d
бит «пользовательский значок» остается установленным, что означает, что если вы когда-либо вставите новые данные icns в вилку ресурсов файла, они сразу же отобразятся. Итак, я думаю, если вы действительно хотите сделать файл как можно более ванильным, вам следует сделать и то, и другое: удалить вилку и сбросить пользовательский бит. (Но я действительно не знаю, имеет ли это значение.)
(Кстати, вы можете вставить пользовательские данные значка, например:)
Rez -append icon.rsrc -o /path/to/file
vim
и сAtom
Том
xattr -d com.apple.ResourceFork myfile
удалить ли все такие активы, в том числе те, которые не являются значком?пользователь3439894
com.apple.FinderInfo
,com.apple.metadata:kMDItemDownloadedDate:
,com.apple.metadata:kMDItemWhereFroms
, и т. д.Мивк
"/some path/with spaces/"
или/some\ path/with\ spaces/
.