Fileferry CLI - For those who manage large media collections.
-
https://github.com/dkarlovi/fileferry
FileFerry — media organizer (short)
FileFerry is a small CLI that organizes image and video files into target folders using metadata and filename patterns.
What it does
- Scan one or more source directories (profiles) for media files.
- Extract metadata from filenames, EXIF (images) or ffprobe (videos) when available.
- Render a per-profile target path template and move files (dry-run by default).
Quick examples
Build and dry-run with your config file:
go build -o fileferry .
./fileferry config.yaml # dry-run: shows what would move
./fileferry config.yaml --ack # actually move filesExample (anonymized)
config.yamlexcerpt:profiles:
Videos:
sources:
- path: /path/to/videos
recurse: true
types: [video]
patterns:
- "{meta.taken.date} {meta.taken.time}.mkv"
- "{meta.taken.date}-{meta.taken.time}.mkv"
target:
path: /organized/videos/{meta.taken.year}/{meta.taken.date}/{meta.taken.datetime}.{file.extension}Pictures:
sources:
- path: /path/to/pictures
recurse: false
types: [image]
target:
path: /organized/pictures/{meta.taken.year}/{meta.taken.date}/{meta.taken.datetime}.{file.extension}Config contract (short)
profilesis a map of profile names -> profile config.- A
ProfileConfigcontains:sources(list), optionalpatterns(filename patterns used to extract metadata), andtarget.path(template used to build destination path). SourceConfighaspath,recurse,typesand optionalfilenames.
Template variables
{meta.taken.year},{meta.taken.date},{meta.taken.datetime}{meta.camera.maker},{meta.camera.model}{file.extension}(no leading dot)
Notes: filename patterns are anchored and must match the filename exactly (e.g.
2025-06-02 15-21-02.mkv). Patterns support tokens like{meta.taken.date}and{meta.taken.time}which map to regex rules.
Hello! It looks like you're interested in this conversation, but you don't have an account yet.
Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.
With your input, this post could be even better 💗
Register Login