MacのFinderでファイルを右クリックして「情報を見る」を選ぶと,次のような画面が現れる。ここにタグを複数設定することができる。次のファイルにはタグ「Deep Learning」「LeCun」「Bengio」「Hinton」「2015」が設定されている。
タグはコマンドで確認できる:
$ mdls -name kMDItemUserTags nature14539.pdf kMDItemUserTags = ( "Deep Learning", LeCun, Bengio, Hinton, 2015 )
このタグはSpotlightで検索できるし,次のようにコマンドでも検索できる:
$ mdfind "kMDItemUserTags == Hinton && kMDItemUserTags == Bengio" $ mdfind "kMDItemUserTags == 'Deep Learn*'"
検索にはファイル名も含ませることができる:
$ mdfind "kMDItemUserTags == Hinton && kMDItemFSName == *.pdf"
kMDItemFSName
以外に kMDItemDisplayName
もあるが,こちらは表示名である(例えば「Documents」と「書類」)。
これ以外にどんなメタデータがあるかは,mdls ファイル名
として調べられる。
これらのメタ情報はMac固有のものである。別のMacに送る場合は rsync -auvzE ....
のように -E
オプションを付ける必要がある。
[2024-09-19追記] 教えていただいたが、Homebrewで入る本家rsyncでも -X
オプションでメタ情報が送れるようになっていた。この新しいrsyncはzlib圧縮に加えてzstd圧縮などができる(zstdがデフォルト)。
タグを操作するもっと便利なコマンドとして tag がある。Homebrew でもインストールできる。
$ tag --help tag - A tool for manipulating and querying file tags. usage: tag -a | --add <tags> <path>... Add tags to file tag -r | --remove <tags> <path>... Remove tags from file tag -s | --set <tags> <path>... Set tags on file tag -m | --match <tags> <path>... Display files with matching tags tag -f | --find <tags> <path>... Find all files with tags (-A, -e, -R ignored) tag -u | --usage <tags> <path>... Display tags used, with usage counts tag -l | --list <path>... List the tags on file <tags> is a comma-separated list of tag names; use * to match/find any tag. additional options: -v | --version Display version -h | --help Display this help -A | --all Display invisible files while enumerating -e | --enter Enter and enumerate directories provided -R | --recursive Recursively process directories -n | --name Turn on filename display in output (default) -N | --no-name Turn off filename display in output (list, find, match) -t | --tags Turn on tags display in output (find, match) -T | --no-tags Turn off tags display in output (list) -g | --garrulous Display tags each on own line (list, find, match) -G | --no-garrulous Display tags comma-separated after filename (default) -c | --color Display tags in color -p | --slash Terminate each directory name with a slash -0 | --nul Terminate lines with NUL (\0) for use with xargs -0 --home Find tagged files in user home directory --local Find tagged files in home + local filesystems --network Find tagged files in home + local + network filesystems
使い方の例:
$ tag --add LeCun,Bengio,Hinton,2015,'Deep Learning' nature14539.pdf $ tag nature*.pdf # タグをリスト $ tag --find Hinton,2015 # AND検索 $ tag --find 'deep learning' /Volumes/opt # /Volumes/opt 以下に限定
残念なことに mdfind
と違ってワイルドカード *
が使えない。
$ mdfind "kMDItemUserTags == 'Deep Learn*'" # 見つかる $ tag --find 'Deep Learn*' # 見つからない
追加リンク:Macで検索結果を絞り込む
追加リンク:Terminal command to get all of a file's metadata?(mdls
以外に xattr -l
、ls -l@
がある。画像についてはmacOSの sips
、ImageMagickの identify
、写真については exiftool
がメタ情報を拾ってくれる)
追記:ファイルの種類を調べるには file
コマンドがあるが、これをAIで賢くしたGoogleの Magika ができた。