Bạn có thể sử dụng xattr. Điều này sao chép các thẻ từ file1 sang file2:
xattr -wx com.apple.metadata:_kMDItemUserTags "$(xattr -px com.apple.metadata:_kMDItemUserTags file1)" file2
xattr -wx com.apple.FinderInfo "$(xattr -px com.apple.FinderInfo file1)" file2
Các thẻ được lưu trữ trong một danh sách thuộc tính dưới dạng một chuỗi các chuỗi:
$ xattr -p com.apple.metadata:_kMDItemUserTags file3|xxd -r -p|plutil -convert xml1 - -o -
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<array>
<string>Red
6</string>
<string>aa</string>
<string>Orange
7</string>
<string>Yellow
5</string>
<string>Green
2</string>
<string>Blue
4</string>
<string>Purple
3</string>
<string>Gray
1</string>
</array>
</plist>
Các thẻ cho màu sắc có các giá trị như Red\n6
(trong đó \n
là một nguồn cấp dữ liệu).
Nếu cờ kColor trong com.apple. DownloaderInfo không được đặt, Finder sẽ không hiển thị các vòng tròn cho màu bên cạnh các tệp. Nếu cờ kColor được đặt thành màu cam và tệp có thẻ màu đỏ, Finder sẽ hiển thị cả vòng tròn màu đỏ và màu cam. Bạn có thể đặt cờ kColor bằng AppleScript:
do shell script "xattr -w com.apple.metadata:_kMDItemUserTags '(\"Red\\n6\",\"new tag\")' ~/desktop/file4"
tell application "Finder" to set label index of file "file4" of desktop to item 1 of {2, 1, 3, 6, 4, 5, 7}
'("Red\n6","new tag")'
là cú pháp plist kiểu cũ cho việc này:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<array>
<string>Red
6</string>
<string>new tag</string>
</array>
</plist>
xattr -p com.apple.FinderInfo file|head -n1|cut -c28-29
in giá trị của các bit được sử dụng cho cờ kColor. Màu đỏ là C, màu cam là E, màu vàng là A, màu xanh lá cây là 4, màu xanh là 8, màu đỏ là 6 và màu xám là 2. (Cờ sẽ thêm 1 vào các giá trị không được sử dụng trong OS X.)