Skip to main content

ff

About

ff is a tool for finding files in the filesystem.

NOTE: ff is in the early stages of development, expect things to break and syntax to change.

Summary

ff is a tool for finding files in the filesystem that all share a set of common features. Its scope is similar to find(1) and fd(1) but it aims at being more accessible and easier to use than find and more versatile and powerful than fd. It is written in Python >= 3.6.

Features

  • Search by file attributes.
  • Search in a wide variety of file metadata.
  • Simple yet powerful expression syntax.
  • Flexible output options.
  • Flexible sort options.
  • Extendable by user plugins.
  • Parallel search and processing.
  • Usable in scripts with a Python API.

Examples

Store all files from the current directory that are tracked by git(1) in a tar(1) archive:

$ ff type=f git.tracked=yes --sort --exec-batch tar cvzf git-tracked.tar.gz

Find files in the directory Videos/ that end with .mkv or .mp4 and are between 720 and 1080 pixels high:

$ ff Videos/ {{ ext=mkv or ext=mp4 }} and {{ height+=720 and height-=1080 }}

More examples are here.

Installation

To build and install ff simply type:

$ python setup.py install

or

$ pip install find-ff

Building with Cython is also supported. Cython >= 3.0 is required. Depending on the set of arguments this may offer a significant speed-up.

$ python setup-cython.py install

Python API

You can use ff's query capabilities in your own scripts:

from ff import Find

for entry in Find("type=f git.tracked=yes", directories=["/home/user/project"], sort=["path"]):
    print(entry["relpath"])

Developing plugins and debug mode

There is a template for new plugins to start from (plugin_template.py) with exhaustive instructions and comments, so you can develop plugins for your own needs.

Useful in that regard is ff's debug mode. It can be activated by executing the ff module.

$ python -m ff --debug info,cache ...

Debug mode produces lots of messages which can be limited to certain categories using the --debug category1,category2,... option. On top of that, debug mode activates many internal checks using assert(). Therefore, it is advisable to use debug mode during plugin development.

Metadata

Release files for find-ff 610

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for find-ff 610
File Size Uploaded Provenance Actions
find_ff-610.tar.gz 90.7 kB Without provenance Details for find_ff-610.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for find-ff 610
File Interpreter ABI Platform Actions
find_ff-610-py3-none-any.whl Python 3 none any Details for find_ff-610-py3-none-any.whl

Total release size: 213.6 kB

Release files / find_ff-610.tar.gz

Download URL find_ff-610.tar.gz
Size 90.7 kB
Tags Source
SHA-256 checksum
How to use checksums
c67baba4000e68381772c52c0b5c04ecf302e53e13ff3ad4e766a09c145ed850
BLAKE2b-256 checksum
How to use checksums
0d9c49b864fe47876d0c8174cfd296e0d1fcafbe851b08f4b4503f90596a2adb
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.2

Release files / find_ff-610-py3-none-any.whl

Download URL find_ff-610-py3-none-any.whl
Size 122.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
ddeff012d814b54af18895071ec20f80ab1bb3b4091ce8acce22c84eb29ec650
BLAKE2b-256 checksum
How to use checksums
4bcafea3c7246a9f7d70e0d1fb59a0f8f95c8175f8f1c3d4105b23a2482b692d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.2

Security for find-ff 610

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

610 This release

2 release files No provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page