OSX tags from terminal/console

Is it possible to create some script to show all the finder-tagged items in terminal/shell?

I'd like to create something like this:

ls-tag "Music" to display all the items of Music tag


No script is needed to accomplish that. Simply use mdfind 'kMDItemUserTags=<tag>'to find all items with the tag <tag>.

In your case that's mdfind 'kMDItemUserTags=Music'.

If you want to restrict the search to a special directory use:

mdfind 'kMDItemUserTags=Music' -onlyin /path/to/folder

e.g.

mdfind 'kMDItemUserTags=Music' -onlyin ~/Music/Classical\ Music/Сергей\ Сергеевич\ Прокофьев

There is a commandline tool called tag:

tag is a command line tool to manipulate tags on Mac OS X files (10.9 Mavericks and above), and to query for files with those tags. tag can use the file system's built-in metadata search functionality to rapidly find all files that have been tagged with a given set of tags.

Its help page:

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 -l | --list <path>...           List the tags on file
    tag -f | --find <tags> <path>...    Find all files with tags, limited to paths if present
  <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/enumerate directories provided
        -d | --descend      Recursively descend into 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)
        -H | --home         Find tagged files in user home directory
        -L | --local        Find tagged files in home + local filesystems
        -R | --network      Find tagged files in home + local + network filesystems
        -0 | --nul          Terminate lines with NUL (\0) for use with xargs -0

Available at https://github.com/jdberry/tag/ or via Macports or Homebrew