{"id":17180602,"url":"https://github.com/houzuoguo/markafile","last_synced_at":"2025-09-12T19:36:34.471Z","repository":{"id":141901347,"uuid":"6652256","full_name":"HouzuoGuo/markafile","owner":"HouzuoGuo","description":"File tagging solution for Linux and Unix","archived":false,"fork":false,"pushed_at":"2013-04-26T10:46:25.000Z","size":262,"stargazers_count":13,"open_issues_count":1,"forks_count":1,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-04-13T17:13:46.979Z","etag":null,"topics":["linux","os","python"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/HouzuoGuo.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2012-11-12T11:14:38.000Z","updated_at":"2022-11-03T04:08:49.000Z","dependencies_parsed_at":"2023-03-12T10:39:55.246Z","dependency_job_id":null,"html_url":"https://github.com/HouzuoGuo/markafile","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/HouzuoGuo%2Fmarkafile","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/HouzuoGuo%2Fmarkafile/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/HouzuoGuo%2Fmarkafile/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/HouzuoGuo%2Fmarkafile/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/HouzuoGuo","download_url":"https://codeload.github.com/HouzuoGuo/markafile/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248750127,"owners_count":21155687,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["linux","os","python"],"created_at":"2024-10-15T00:29:57.773Z","updated_at":"2025-04-13T17:13:52.247Z","avatar_url":"https://github.com/HouzuoGuo.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"    NAME\n        markafile - file tagging for *nix operating systems\n\n    DESCRIPTION\n        markafile is a utility program for tagging files and searching files by\n        tags using a powerful search expression.\n\n        Tags are case in-sensitive, may not contain space(s). Any number of tags\n        may be applied to any file. File tags are stored in an SQLite database.\n\n        Should any error occur, markafile will exit with status 1 and print error\n        details to STDERR.\n\n    REQUIRED PERMISSIONS\n        markafile requires the following permissions:\n        - Read-Write permission on SQLite database file\n        - Read-Write permission on SQLite database file directory (1)\n        - Read-Execute permission on tagged directory (2)\n        - Read permission on tagged file\n\n        (1) markafile creates the database file if it does not exist.\n\n        (2) markafile tags directory files, it does not tag the directory itself.\n\n    TAG FILES\n        To add tags to a file:\n        $ markafile tag \"startup console conf\" /etc/motd\n\n        To add tags to multiple files:\n        $ markafile tag \"conf cron script\" /etc/cron.daily /etc/cron.hourly\n\n        To add tags to directory files:\n        $ markafile tag \"script\" /etc/rc.d\n\n        To add tags to directory files (including sub-directories)\n        $ markafile tag \"srv-conf conf\" /etc/httpd /etc/ppp -r\n\n        File tag may not:\n        - be \"and\" \"or\" \"not\" \"(\" \")\"\n        - contain space(s)\n        - contain asterisk(s)\n\n    SEARCH FILES\n        To print all tagged files and tags under a directory:\n        $ markafile find \"*\" /etc/httpd\n\n        To print all tagged files and tags under a directory (including\n        sub-directories):\n        $ markafile find \"*\" /etc -r\n\n    COMPLEX SEARCH\n        Search expression is a mini-language consists of tags, keywords and\n        parenthesis. The expression is translated into SQL query for execution.\n\n        TAG NAMES\n            Case in-sensitive file tags\n        KEYWORDS\n            Logical operators \"and\", \"or\", \"not\"\n        PARANTHESIS\n            To elevate precedence of their enclosed expression\n\n        Simple search expression example:\n        $ markafile find \"srv-conf\" /etc -r\n\n        Complex example:\n        $ markafile find \"conf and srv-conf and not (cron or script)\" /etc -r\n\n    REMOVE FILE TAGS\n        Use action \"untag\", specify search expression followed by \":\" and tags to\n        be removed:\n        $ markafile untag \"not (cron or script):srv-conf conf\" /etc -r\n\n        If \":*\" follows the search expression, all tags will be removed from search\n        result:\n        $ markafile untag \"not (cron or script):*\" /etc -r\n\n        To remove all tags from all files:\n        $ markafile untag \"*:*\" /etc -r\n\n    ENVIRONMENT VARIABLE\n        Variable MARKAFILE_RELPATH may be set to absolute path to a directory, this\n        will change the behaviour of markafile.\n\n        If env variable 'MARKAFILE_RELPATH' is set:\n          - relative path will be calculated and stored with tags\n          - query will calculate relative path and search them in tag database\n\n        For example, first MARKAFILE_RELPATH is set to \"/home/howard\":\n          - Apply tag \"code\" to \"/home/howard/f.py\" will tag \"code\" to \"f.py\".\n        Then, the database /home/howard/.markafile.sqlite3 is moved to ~belle:\n          - Set MARKAFILE_RELPATH to \"/home/belle\"\n          - If belle has \"f.py\" in her home directory, query \"code\" in ~belle will\n          return the file \"f.py\"\n\n    BUGS\n        When tagged files are moved/deleted, their original paths will remain in\n        database thus causing incorrect path-tag associations. However, search\n        results are guaranteed to only return results of correct and valid paths.\n\n    AUTHOR\n        Howard Guo \u003cguohouzuo@gmail.com\u003e\n\n    REPORTING BUGS\n        Please contact the author by Email for bug report and feedback.\n\n    COPYRIGHT\n        Copyright (c) 2013 Howard Guo\n        All rights reserved.\n\n        Redistribution and use in source and binary forms, with or without\n        modification, are permitted provided that the following conditions are met:\n\n        1. Redistributions of source code must retain the above copyright notice,\n           this list of conditions and the following disclaimer.\n        2. Redistributions in binary form must reproduce the above copyright\n           notice, this list of conditions and the following disclaimer in the\n           documentation and/or other materials provided with the distribution.\n\n        THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n        AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n        IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n        ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE\n        LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\n        CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\n        SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\n        INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\n        CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n        ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n        POSSIBILITY OF SUCH DAMAGE.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhouzuoguo%2Fmarkafile","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhouzuoguo%2Fmarkafile","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhouzuoguo%2Fmarkafile/lists"}