A unix filesystem utility to rename files using a restricted url-safe character subset.
- Avoid bugs and vulnerabilities due to poor handling of problematic characters including spaces, quotes, etc
- Simplify things by sticking with lowercase
- Allow paths to be typed without keyboard gymnastics
- Allow easy tab completion
Slugger reads filesystem paths from standard input, one per line. In the default mode, it just prints out the slugged versions. If you pass the --rename
command line argument, slugger will do the file renames.
Typically the input comes from commands that output lists of files like find
, ls
, etc.
- Preview slugged names without doing anything:
find . -type f | slugger
- Do the actual renaming:
find . -type f | slugger --rename
- Convert to lowercase
- Trim leading and trailing whitespace
- Remove repeated dashes
- Do a "unidecode" to translate mostly to ASCII
- Convert all whitespaces to dash
- Delete anything else
- slugger will not clobber existing files. If the slugged file already exists, it will abort and exit with an error code.
- slugger is safe to run on already-slugged files. It will no-op and exit success (it's idempotent).
Uh, it has some decent unit tests but it's brand new and should be considered unreliable for now.