{"id":13585455,"url":"https://github.com/sjl/friendly-find","last_synced_at":"2025-04-07T13:06:56.323Z","repository":{"id":4732625,"uuid":"5881468","full_name":"sjl/friendly-find","owner":"sjl","description":"A friendlier find(1).","archived":false,"fork":false,"pushed_at":"2022-08-25T23:29:51.000Z","size":52,"stargazers_count":216,"open_issues_count":1,"forks_count":17,"subscribers_count":9,"default_branch":"master","last_synced_at":"2025-03-31T10:08:00.362Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/sjl.png","metadata":{"files":{"readme":"README.markdown","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2012-09-20T03:38:37.000Z","updated_at":"2025-03-22T22:53:06.000Z","dependencies_parsed_at":"2022-09-18T11:40:57.603Z","dependency_job_id":null,"html_url":"https://github.com/sjl/friendly-find","commit_stats":null,"previous_names":[],"tags_count":7,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sjl%2Ffriendly-find","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sjl%2Ffriendly-find/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sjl%2Ffriendly-find/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sjl%2Ffriendly-find/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sjl","download_url":"https://codeload.github.com/sjl/friendly-find/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247657281,"owners_count":20974345,"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":[],"created_at":"2024-08-01T15:04:57.076Z","updated_at":"2025-04-07T13:06:56.306Z","avatar_url":"https://github.com/sjl.png","language":"Python","readme":"friendly-find\n=============\n\n`friendly-find` is the friendly file finder.\n\nIt's meant to be a more usable replacement for find(1).  If you've used [ack][],\nthen ffind is to find as ack is to grep.\n\nCurrently it's still in a prototype stage.  Most things work, with the following\nnotable exceptions:\n\n* Time filtering is unimplemented.\n* SVN ignores aren't parsed.\n* It's pretty slow (though pruning VCS data directories saves lots of time).\n\nFeedback is welcome, though remember that it's still a prototype, and is\nopinionated software.\n\n[ack]: http://betterthangrep.com/\n\n* Mercurial: \u003chttp://hg.stevelosh.com/friendly-find/\u003e\n* Git: \u003chttp://github.com/sjl/friendly-find/\u003e\n* Documentation: \u003chttp://github.com/sjl/friendly-find/#usage\u003e\n* Issues: \u003chttp://github.com/sjl/friendly-find/issues/\u003e\n* License: GPLv3 (see [notes](http://github.com/sjl/friendly-find/#license))\n\nInstallation\n------------\n\nIf you're on OS X you can use Homebrew:\n\n    brew install ffind\n\nOr you can install manually:\n\n1. Copy the `ffind` to your computer somehow.\n2. Make it executable.\n3. Get it into your path somehow.\n\nUsage\n-----\n\nThere's a half-assed man page generated from `help2man`, but `ffind --help` is\nprobably easier to read.\n\n### Command Line Program\n\n    Usage: ffind [options] PATTERN\n\n    Options:\n      -h, --help            show this help message and exit\n      --version             print the version and exit\n      -d DIR, --dir=DIR     root the search in DIR (default .)\n      -D N, --depth=N       search at most N directories deep (default 25)\n      -f, --follow          follow symlinked directories and search their contents\n      -F, --no-follow       don't follow symlinked directories (default)\n      -0, --print0          separate matches with a null byte in output\n      -l, --literal         force literal search, even if it looks like a regex\n      -v, --invert          invert match\n      -e, --entire          match PATTERN against the entire path string\n      -E, --non-entire      match PATTERN against only the filenames (default)\n      -p, --full-path       print the file's full path\n      -P, --relative-path   print the file's relative path (default)\n\n      Configuring Case Sensitivity:\n        -s, --case-sensitive\n                            case sensitive matching (default)\n        -i, --case-insensitive\n                            case insensitive matching\n        -S, --case-smart    smart case matching (sensitive if any uppercase chars\n                            are in the pattern, insensitive otherwise)\n\n      Configuring Ignoring:\n        -b, --binary        allow binary files (default)\n        -B, --no-binary     ignore binary files\n        -r, --restricted    restricted search (skip VCS directories, parse all\n                            ignore files) (default)\n        -q, --semi-restricted\n                            semi-restricted search (don't parse VCS ignore files,\n                            but still skip VCS directories and parse .ffignore)\n        -u, --unrestricted  unrestricted search (don't parse ignore files, but\n                            still skip VCS directories)\n        -a, --all           don't ignore anything (ALL files can match)\n        -I PATTERN, --ignore=PATTERN\n                            add a pattern to be ignored (can be given multiple\n                            times)\n\n      Size Filtering:\n        Sizes can be given as a number followed by a prefix.  Some examples:\n        1k, 5kb, 1.5gb, 2g, 1024b\n\n        --larger-than=SIZE  match files larger than SIZE (inclusive)\n        --smaller-than=SIZE\n                            match files smaller than SIZE (inclusive)\n\n      Type Filtering:\n        Possible types are a (all), f (files), d (dirs), r (real), s\n        (symlinked), e (real files), c (real dirs), x (symlinked files), y\n        (symlinked dirs). If multiple types are given they will be unioned\n        together:  --type 'es' would match real files and all symlinks.\n\n        -t TYPE(S), --type=TYPE(S)\n                            match only specific types of things (files, dirs, non-\n                            symlinks, symlinks)\n\n### .ffignore file format\n\nThe `.ffignore` file is a file containing lines with patterns to ignore, with\na few exceptions:\n\n* Blank lines and whitespace-only are skipped.  If you want to ignore files\n  whose names consist of only whitespace use a regex.  Or reconsider what got\n  you there in the first place.\n* Lines beginning with a `#` are comments and are skipped.  There can be\n  whitespace before the `#` as well.\n* Lines of the form `syntax: (literal|regex)` change the mode of the lines\n  following them, much like Mercurial's ignore file format.  The default is\n  regex mode.\n* All other lines are treated as patterns to ignore.\n\nAll patterns are unrooted, and search the full path from the directory you're\nsearching in.  Use a regex with `^` if you want to root them.\n\nFor example:\n\n    foo.*bar\n\nWill ignore:\n\n    ./foobar.txt\n    ./foohello/world/bar.txt\n\nLicense\n-------\n\nCopyright 2016 Steve Losh and contributors.\n\nLicensed under [version 3 of the GPL][gpl].\n\nRemember that you can use GPL'ed software through their command line interfaces\nwithout any license-related restrictions.  `ffind`'s command line interface is\nthe only stable one, so it's the only one you should ever be using anyway.  The\nlicense doesn't affect you unless you're:\n\n* Trying to copy the code and release a non-GPL'ed version of `ffind`.\n* Trying to use it as a Python module from other Python code (for your own\n  sanity I urge you to not do this) and release the result under a non-GPL\n  license.\n\n[gpl]: http://www.gnu.org/copyleft/gpl.html\n","funding_links":[],"categories":["Python","\u003ca name=\"find\"\u003e\u003c/a\u003eFile finding (alternatives to find)","Other"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsjl%2Ffriendly-find","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsjl%2Ffriendly-find","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsjl%2Ffriendly-find/lists"}