No commit activity in last 3 years
No release in over 3 years
Bulk rename and remove unwanted characters from list of files in any directory recursively. Turn something like 'my_#$@#$_bad_$!@_filename!!.txt' into 'my_bad_filename.txt'
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Development

~> 1.10
~> 0.8
~> 1.0
~> 2.13
~> 5.8
~> 0.10
~> 10.4
~> 0.35
~> 0.8

Runtime

~> 0.19
 Project Readme

filename_cleaner

Gem Version Dependency Status Code Climate Build Status Coverage Status

Quickly rename list of files with extension and replace any special characters with with any given string.

Currently any string that are not one of letters (a..z, A..Z), numbers (0..9), _ (underscore), - (dash), and ' ' spaces string are first squeezed into one string and then replaced by any given string/char [default to . (a single dot)].

Optionally, you could also

  • capitalized each word in the output
  • make each word in output lower case
  • use more than one character as the separator string if you prefer

Installation

gem install filename_cleaner

Use as command line interface (CLI)

Just type filename_cleaner without any options to see the list of help

Usage:
  filename_cleaner

Options:
  -b, [--base-dir=BASE_DIR]                # Base directory
                                           # Default: . (current directory)
  -e, [--exts=one two three]               # List of extensions to search for
  -r, [--recursive], [--no-recursive]      # Search for files recursively
                                           # Default: true
  -s, [--sep-char=SEP_CHAR]                # Separator char to use
                                           # Default: _
  -d, [--downcase], [--no-downcase]        # Convert each word int the filename to lowercase
                                           # Default: --no-downcase
  -t, [--capitalize], [--no-capitalize]    # Capitalize each word in the filename
                                           # Default: --no-capitalize
  -c, [--commit], [--no-commit]            # Commit your changes
                                           # Default: --no-commit
  -v, [--version], [--no-version]          # Display version information
                                           # Default: --no-version

Sanitize and rename file with special characters

To perform the dry-run without make any changes to the file system:

cd ~/projects/files
filename_cleaner --base-dir . --exts java rb --recursive --sep-char _

To make your change permanent:

cd ~/projects/files
filename_cleaner --base-dir . --exts java rb --recursive --sep-char _ --commit

Us as library in your project

Add this line to your application's Gemfile:

gem 'filename_cleaner'

And then execute:

$bundle

Example Usage:

  • Use the default separator string '.'
require 'filename_cleaner'
# Treat the input as having extension (e.g. at least one dot within the input)
new_name = FilenameCleaner.sanitize('some b@d fil$name.txt', '_', true)
puts new_name # => 'some_b_d_fil_name.txt'

# Treat the input as having no extension (ignore the meaning of within the input)
new_name = FilenameCleaner.sanitize('some b@d fil$name.txt', '_', false)
puts new_name # => 'some_b_d_fil_name_txt'

Contributing

Bug reports and suggestions for improvements are always welcome, GitHub pull requests are even better!.

  1. Fork it
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create new Pull Request