Skip to content

jaxvanyang/batchlink

Repository files navigation

batchlink

pdm-managed Imports: isort Code style: black linting: pylint Ruff Flake8: checked

Packaging status

Batch link files without modifying original files.

Why

To solve the problem - Is there a way to rename files from a torrent and still be able to seed? If you are serving BT files on a media server like Jellyfin, you may want this.

Features

  • A CLI to easily batch link, rename, copy files.
  • An extensible library.

Installation

Besides package managers, you can also use self-contained executables for Linux, macOS and Windows from Releases.

Examples

Create example files:

mkdir -p a b && touch a/0.log a/1.log a/1.txt a/2.txt

Create hard links in b/ pointing to all files in a/ with original file names:

Note

It's recommended to add option --dry-run to see what will happen at first.

$ batchlink -S a -d b '*' '{path}'
Create hard link b/0.log to a/0.log
Create hard link b/1.log to a/1.log
Create hard link b/1.txt to a/1.txt
Create hard link b/2.txt to a/2.txt

Only create links for log files:

$ batchlink -S a -d b '*.log' '{path}'
Create hard link b/0.log to a/0.log
Create hard link b/1.log to a/1.log

And rename to one-based numbering file names:

$ batchlink -S a -d b '*.log' '{num}.log'
Create hard link b/1.log to a/0.log
Create hard link b/2.log to a/1.log

Format replacement values:

$ batchlink -S a -d b '*.log' '{num:02}.log'
Create hard link b/01.log to a/0.log
Create hard link b/02.log to a/1.log

Absolute symbolic link, relative symbolic link, rename, copy:

batchlink -s -S a -d b '*.log' '{num:02}.log'
batchlink -sR -S a -d b '*.log' '{num:02}.log'
batchlink -r -S a -d b '*.log' '{num:02}.log'
batchlink -c -S a -d b '*.log' '{num:02}.log'