Skip to content

Instantly share code, notes, and snippets.

@bsa7
Last active August 29, 2015 14:03
Show Gist options
  • Save bsa7/0b2cbfed3d41796fe320 to your computer and use it in GitHub Desktop.
Save bsa7/0b2cbfed3d41796fe320 to your computer and use it in GitHub Desktop.
ruby delete files recurcive by regexp
require 'colorize'
#
# параметр - регулярное выражение в кавычках.
#
# пример вызова:
#
# ruby delete_by_regexp.rb '^*.-[a-z0-9]{32}\..+?$'
def listdir(dirname, regexp, indent="")
dir_print = "#{indent}#{dirname}".green
dir_printed = false
# puts "#{Dir.entries(dirname)}".white
Dir.entries(dirname).sort_by{|x|"#{File.directory?(x) ? '_0' : '_1'}#{x.to_s}"}.each do |file|
next if file[/^\.+$/]
if File.directory?("#{dirname}/#{file}")
# puts indent+"#{dirname}/#{file}".yellow
listdir("#{dirname}/#{file}", regexp," #{indent}")
else
if regexp =~ file
unless dir_printed
puts dir_print
dir_printed = true
end
puts indent+"delete #{file.to_s.red}"
system "rm '#{dirname}/#{file}'"
end
end
end
end
puts "'#{ARGV[0]}'"
regexp = Regexp.new(ARGV[0])
puts "'#{regexp.inspect}'"
listdir(Dir.pwd, regexp, "")
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment