forkmeGo home

efind

Introduction

efind (extendable find) searches for files in a directory hierarchy.

Basically it's a wrapper for GNU find providing an easier and more intuitive expression syntax. It can be extended by custom functions to filter search results.

A quick example

Let's assume you want to find all MP3 (*.mp3) and Ogg Vorbis (*.ogg) files that were modified less than two days ago in your music folder. That's no problem with efind's self-explanatory expression syntax:

$ efind ~/music '(name="*.mp3" or name="*.ogg") and mtime<2 days'

Additionally you can filter the search result by audio tags and properties with the taglib extension:

$ efind ~/music '(name="*.mp3" or name="*.ogg") and mtime<2 days \
  and artist_matches("Welle: Erdball") and audio_length()>120'

Use the –order-by option to sort the search result. In this example we sort the found files by size (descending) and path (ascending):

$ efind ~/music '(name="*.mp3" or name="*.ogg") and mtime<2 days \
  and artist_matches("Welle: Erdball") and audio_length()>120' \
  --order-by "-{bytes}{path}"

efind also provides options to limit the output:

$ efind ~/music '(name="*.mp3" or name="*.ogg") and mtime<2 days \
  and artist_matches("Welle: Erdball") and audio_length()>120' \
  --limit 1

The example above prints the first file matching the search criteria and aborts the search immediately.

Project website

If you want more information or install efind visit the project website.