Skip to main content

``findx``, an extended ``find`` command.

Project description

https://travis-ci.org/drmikehenry/findx.svg https://img.shields.io/pypi/v/findx.svg https://img.shields.io/pypi/status/findx.svg https://img.shields.io/pypi/pyversions/findx.svg

Overview

findx is an extended version of the Unix find command written in the Python language as a wrapper around find and other Unix tools. find is a very powerful tool, but by itself there are a large number of arguments required for a typical invocation. findx provides convenient shortcuts for invoking find without so much typing.

As a quick example, imagine using find, xargs and grep to search through a tree of files. A simple invocation might be:

find -type f | xargs grep PATTERN

But the above invocation won’t correctly handle file with spaces or unusual characters; handling that grows the command to:

find -type f -print0 | xargs -0 grep PATTERN

Filenames are handled correctly now, but the command probably searches through some uninteresting files. It also misses on a couple of boundary cases. You’d probably like to include xargs --no-run-if-empty to ensure grep isn’t invoked when no files are found; you might want to follow symbolic links as well as files; and you might want to skip over .git directories (for example). Adding those into the above command grows things considerably:

find -L -name .git -prune -o -type f -print0 |
  xargs -0 --no-run-if-empty grep PATTERN

After excluding additional files and directories and perhaps adding --color=auto to the grep invocation, things are getting out of hand. findx exists to make such invocations simpler. First, findx knows about the need for -print0 and xargs -0 --no-run-if-empty; using : implies all of the standard protocol for using xargs correctly, reducing the above to:

findx -L -name .git -prune -o -type f : grep PATTERN

Standard paths to ignore are requested via -stdx:

findx -L -stdx -type f : grep PATTERN

Following symlinks to files and producing only files is another common requirement; the switch -ffx implies finding files (following symlinks) while excluding a predefined set of directories and files:

findx -ffx : grep PATTERN

Piping filenames into grep is such a common pattern that the -ffg switch is the same as -ffx : grep, reducing things to:

findx -ffg PATTERN

In addition, ffx and ffg are to additional entry points into findx that reduce things even further:

ffx = findx -ffx
ffg = findx -ffg

In the most common case, searching a file tree thus reduces to:

ffg PATTERN

See findx --help or read the top of findx.py for more details.

Installation

From PyPI, installation is the usual:

pip install findx

From the source tree, install via:

python setup.py install

Running the tests

Install any development requirements:

pip install -r dev-requirements.txt

Run tests via pytest:

pytest

Changes

See CHANGES.rst for a history of changes.

License

findx is distributed under the terms of the MIT license; see LICENSE.rst for details.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

findx-0.11.0.tar.gz (50.4 kB view details)

Uploaded Source

Built Distribution

findx-0.11.0-py3-none-any.whl (17.5 kB view details)

Uploaded Python 3

File details

Details for the file findx-0.11.0.tar.gz.

File metadata

  • Download URL: findx-0.11.0.tar.gz
  • Upload date:
  • Size: 50.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.0 CPython/3.12.3

File hashes

Hashes for findx-0.11.0.tar.gz
Algorithm Hash digest
SHA256 a8942e42aa7565e4b1b013188159796cf89bb10d0be5edada346d45cc8633e67
MD5 c591ae3b98904b1b91f89ed23f9e0680
BLAKE2b-256 740fb245fc9df504f9b7eb2ba98cd5290650695da54970b38cb9a6eab50d5851

See more details on using hashes here.

File details

Details for the file findx-0.11.0-py3-none-any.whl.

File metadata

  • Download URL: findx-0.11.0-py3-none-any.whl
  • Upload date:
  • Size: 17.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.0 CPython/3.12.3

File hashes

Hashes for findx-0.11.0-py3-none-any.whl
Algorithm Hash digest
SHA256 20af4f09729fbb48020108a6eab3e5b2907796de3d2186621f3a673748859ca1
MD5 3f0b0f96877f42696b414c13912277bb
BLAKE2b-256 33e405a425b15520b5e6cd18e3c6d4a71a938b16ce4532e2698b6011d562583a

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page