> ls -al
-rw-r--r--@ 1 me staff 962 22 Aug 22:06 .bash_profile
drwxr-xr-x 119 me staff 4046 28 Jul 19:03 Bluetooth
drwx------+ 14 me staff 476 25 Aug 12:18 Desktop
drwx------+ 14 me staff 476 25 Aug 09:42 Documents
drwx------+ 7 me staff 238 25 Aug 09:42 Downloads
drwx------@ 20 me staff 680 25 Aug 09:42 Dropbox
drwxr-xr-x@ 20 me staff 680 25 Aug 09:42 Google Drive
The @ sign you get in the listing with the -l option tells you that that file or folder has some extended properties.
> ls -al@
-rw-r--r--@ 1 me staff 962 22 Aug 22:06 .bash_profile
com.apple.FinderInfo 32
com.apple.TextEncoding 15
drwxr-xr-x 119 me staff 4046 28 Jul 19:03 Bluetooth
drwx------+ 14 me staff 476 25 Aug 12:18 Desktop
drwx------+ 14 me staff 476 25 Aug 09:42 Documents
drwx------+ 7 me staff 238 25 Aug 09:42 Downloads
drwx------@ 20 me staff 680 25 Aug 09:42 Dropbox
com.apple.FinderInfo 32
drwxr-xr-x@ 20 me staff 680 25 Aug 09:42 Google Drive
com.apple.FinderInfo 32
On OS X the ls command has an @ option, which lists the extended property for each entry, if any.
> xattr *
Dropbox: com.apple.FinderInfo
Google Drive: com.apple.FinderInfo
The xattr command lets you interact with the extended attributes. Just running it by itself it will list them all, Note that it doesn’t handle hidden files though.
> xattr -l *
Dropbox: com.apple.FinderInfo:
00000000 00 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 |................|
00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
00000020
Google Drive: com.apple.FinderInfo:
00000000 00 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 |................|
00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
00000020
The -l flag lets shows the content for all extended properties for a file. They are not always hex data.
> xattr -p com.apple.TextEncoding .bash_profile
UTF-8;134217984
The -p flag lists the content of a specific extended attribute (in this case, com.apple.TextEncoding) for a specific file (in this case .bash_profile). This particular attribute is a string.
> xattr -w test "what is this" .bash_profile
> xattr -l .bash_profile
com.apple.FinderInfo:
00000000 54 45 58 54 00 00 00 00 00 00 00 00 00 00 00 00 |TEXT............|
00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
00000020
com.apple.TextEncoding: UTF-8;134217984
test: what is this
-w allows you create your own extended attributes. Here one is written and then read out.
> xattr -d test .bash_profile
> xattr -l .bash_profile
com.apple.FinderInfo:
00000000 54 45 58 54 00 00 00 00 00 00 00 00 00 00 00 00 |TEXT............|
00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
00000020
com.apple.TextEncoding: UTF-8;134217984
-d complements -w by allowing one to delete an extended attribute.
> xattr -d com.apple.FinderInfo *
This allows you to delete all the com.apple.FinderInfo extended attributes from all the files in a folder