Skip to content

mac で ls した際に表示されるアットマーク (@) を削除する

macOS で ls -l した際、以下のようにファイルにアットマーク (@) が表示される場合があります。 これを削除する方法をメモしておきます。

$ ls -l test.txt
-rw-------@ 1 user  staff  387  8 24  2023 test.txt

拡張属性の確認方法

アットマークは「拡張属性が付与されている」ことを意味しています。 付与されている拡張属性の種類は ls -l@ を実行することで確認することが出来ます。 尚、com.apple.FinderInfo 拡張属性は「Finder 上に表示するか? しないか?」を制御出来る拡張属性のようです。

$ ls -l@ test.txt
-rw-------@ 1 user  staff  387  8 24  2023 test.txt
 com.apple.FinderInfo  32

指定した拡張属性を削除する

xattr -d com.apple.FinderInfo test.txt

再帰的に全ての拡張属性を削除する

xattr -cr *

参考

xattr のヘルプ表示

$ xattr --help
usage: xattr [-l] [-r] [-s] [-v] [-x] file [file ...]
       xattr -p [-l] [-r] [-s] [-v] [-x] attr_name file [file ...]
       xattr -w [-r] [-s] [-x] attr_name attr_value file [file ...]
       xattr -d [-r] [-s] attr_name file [file ...]
       xattr -c [-r] [-s] file [file ...]

The first form lists the names of all xattrs on the given file(s).
The second form (-p) prints the value of the xattr attr_name.
The third form (-w) sets the value of the xattr attr_name to the string attr_value.
The fourth form (-d) deletes the xattr attr_name.
The fifth form (-c) deletes (clears) all xattrs.

options:
  -h: print this help
  -l: print long format (attr_name: attr_value and hex output has offsets and
      ascii representation)
  -r: act recursively
  -s: act on the symbolic link itself rather than what the link points to
  -v: also print filename (automatic with -r and with multiple files)
  -x: attr_value is represented as a hex string for input and output

xattr のマニュアル表示

XATTR(1)                                  General Commands Manual                                  XATTR(1)

NAME
     xattr – display and manipulate extended attributes

SYNOPSIS
     xattr [-lrsvx] file ...
     xattr -p [-lrsvx] attr_name file ...
     xattr -w [-rsx] attr_name attr_value file ...
     xattr -d [-rsv] attr_name file ...
     xattr -c [-rsv] file ...
     xattr -h | --help

DESCRIPTION
     The xattr command can be used to display, modify or remove the extended attributes of one or more
     files, including directories and symbolic links.  Extended attributes are arbitrary metadata stored
     with a file, but separate from the filesystem attributes (such as modification time or file size).
     The metadata is often a null-terminated UTF-8 string, but can also be arbitrary binary data.

     One or more files may be specified on the command line.  For the first two forms of the command, when
     there are more than one file, the file name is displayed along with the actual results.  When only one
     file is specified, the display of the file name is usually suppressed (unless the -v option described
     below, is also specified).

     In the first form of the command (without any other mode option specified), the names of all extended
     attributes are listed.  Attribute names can also be displayed using “ls -l@”.

     In the second form, using the -p option (“print”), the value associated with the given attribute name
     is displayed.  Attribute values are usually displayed as strings.  However, if nils are detected in
     the data, the value is displayed in a hexadecimal representation.

     The third form, with the -w option (“write”), causes the given attribute name to be assigned the given
     value.

     The fourth form, with the -d option (“delete”), causes the given attribute name (and associated
     value), to be removed.

     In the fifth form, with the -c option (“clear”), causes all attributes (including their associated
     values), to be removed.

     Finally, the last form, with either the -h or --help option, displays a short help message and exits
     immediately.

OPTIONS
     -l  By default, the first two command forms either displays just the attribute names or values,
         respectively.  The -l option causes both the attribute names and corresponding values to be
         displayed.  For hexadecimal display of values, the output is preceeded with the hexadecimal offset
         values and followed by ASCII display, enclosed by “|”.

     -r  If a file argument is a directory, act as if the entire contents of the directory recursively were
         also specified (so that every file in the directory tree is acted upon).

     -s  If a file argument is a symbolic link, act on the symbolic link itself, rather than the file that
         the symbolic link points at.

     -v  Force the file name to be displayed, even for a single file.

     -x  Force the attribute value to be displayed in the hexadecimal representation.

         The -w option normally assumes the input attribute value is a string.  Specifying the -x option
         causes xattr to expect the input in hexadecimal (whitespace is ignored).  The xxd(1) command can
         be used to create hexadecimal representations from existing binary data, to pass to xattr.

EXIT STATUS
     The xattr command exits with zero status on success.  On error, non-zero is returned, and an error
     message is printed to the standard error.  For system call errors, both the error code and error
     string are printed (see getxattr(2), listxattr(2), removexattr(2) and setxattr(2) for a complete list
     of possible error codes).

     Some attribute data may have a fixed length that is enforced by the system.  For example,

           % xattr -w com.apple.FinderInfo 0 foo
           xattr: [Errno 34] Result too large: 'foo'

     The com.apple.FinderInfo attribute must be 32 bytes in length.

EXAMPLES
     This example copies the com.apple.FinderInfo attribute from the /usr directory to the MyDir directory:

           % xattr -px com.apple.FinderInfo /usr
           00 00 00 00 00 00 00 00 40 00 00 00 00 00 00 00
           00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
           % xattr -l MyDir
           % xattr -wx com.apple.FinderInfo \
             "`xattr -px com.apple.FinderInfo /usr`" MyDir
           % xattr -l MyDir
           com.apple.FinderInfo:
           00000000  00 00 00 00 00 00 00 00 40 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

SEE ALSO
     ls(1), xxd(1), getxattr(2), listxattr(2), removexattr(2), setxattr(2)

macOS 15.0                                   November 29, 2010                                   macOS 15.0