|Lynne Megido c3b5dbea35||2 days ago|
|.idea||2 days ago|
|doc||2 weeks ago|
|src||2 days ago|
|.drone.yml||2 weeks ago|
|.gitignore||2 weeks ago|
|.gitlab-ci.yml||2 days ago|
|.mailmap||3 weeks ago|
|CHANGELOG.md||2 days ago|
|Cargo.lock||4 days ago|
|Cargo.toml||4 days ago|
|Cross.toml||3 months ago|
|LICENSE||3 months ago|
|README.md||3 days ago|
|clippy.sh||2 weeks ago|
|rustfmt.toml||4 days ago|
|test.py||2 weeks ago|
fif recursively scans the given directory and outputs a shell script to fix the name of any files with incorrect extensions. By default, fif will scan all non-hidden files in the given directory, and will ignore symlinks.
As fif prints a shell script to stdout rather than acting on the files directly, you may wish to redirect its output to
a file, e.g.
fif ~/Documents > output.sh. You can also pipe the output directly into your shell, e.g.
fif ~/Documents | bash, although this is not recommended - you should look over fif's output and verify for yourself
that it's not doing anything that will give you a headache before running it.
cargo install --locked fif
To update, simply re-run this command, or use a tool like cargo-update .
xdg-mime should work on any *nix system with libmagic/file(1) installed, although
I've only tested it on Linux and FreeBSD.
infer should work on any system.
You can override the default backend for your system at compile time like so:
# xdg-mime cargo install fif --features=xdg-mime-backend # infer cargo install fif --features=infer-backend
Of the supported backends,
xdg-mime by far supports the most file types, as it uses the excellent Shared MIME
Info database, whereas
infer uses its own baked-in database.
infer is also faster to load, if only by a few dozen milliseconds, and has no external dependencies.
It is also possible to disable multithreading by installing without default features:
cargo install fif --no-default-features
fif --help for more.
The simplest way to use fif looks like this:
This command will scan all non-hidden files in your
You can also manually specify a set of extensions to use:
fif -e jpeg,jpg,zip,docx ~/Documents
Or a set of extensions - for example, to scan files with image extensions (jpg, png, gif, bmp...):
fif -E images ~/Pictures
By default, fif will output a bash script (or PowerShell script on Windows) that can be used to fix all the files it found with incorrect file extensions.
You might find it useful to output this script to a file (rather than to stdout):
fif -E images ~/Pictures > output.sh
You can also manually specify an output format to use:
fif -O powershell ~/Documents > output.ps1
By default, fif will log any info, warnings, and errors encountered during execution. This can be changed with the
# also log debug info fif -v ~/Downloads # ...and trace info fif -vv ~/Downloads
You can also reduce the level of logging with the
# don't show info fif -q ~/Downloads # ...or warnings fif -qq ~/Downloads # ...or even errors! fif -qqq ~/Downloads
The verbosity of the logging can also be modified by setting the environment variable
error. Values set by
RUST_LOG override the
# show all levels except trace RUST_LOG=debug fif ~/Downloads # only show errors RUST_LOG=error fif ~/Downloads
The five logging levels are used as follows:
|error||Errors that cause fif to stop running||fif was unable to open the provided directory|
|warn||Warnings that don't cause fif to stop running||fif was unable to determine the mime type of a given file|
|info||Information pertaining to fif's status||The provided directory was scanned without issue, and no files are in need of renaming|
|debug||Debug information - usually not important to end users||The list of extensions fif will consider|
|trace||Trace info - usually not important to end users||"Found 15 items to check", "Scan successful", etc.|