📄 04 - deleting files that match a regular expression.rb
字号:
def delete_matching_regexp(dir, regex) Dir.entries(dir).each do |name| path = File.join(dir, name) if name =~ regex ftype = File.directory?(path) ? Dir : File begin ftype.delete(path) rescue SystemCallError => e $stderr.puts e.message end end endend#---require 'fileutils'tmp_dir = 'tmp_buncha_files'files = ['A', 'A.txt', 'A.html', 'p.html', 'A.html.bak']directories = ['text.dir', 'Directory.for.html']Dir.mkdir(tmp_dir) unless File.directory? tmp_dirfiles.each { |f| FileUtils.touch(File.join(tmp_dir,f)) }directories.each { |d| Dir.mkdir(File.join(tmp_dir, d)) }#---Dir.entries(tmp_dir)# => [".", "..", "A", "A.txt", "A.html", "p.html", "A.html.bak", # "text.dir", "Directory.for.html"]delete_matching_regexp(tmp_dir, /^[A-Z].*\.[^.]{4,}$/)Dir.entries(tmp_dir)# => [".", "..", "A", "A.txt", "p.html", "A.html.bak", "text.dir"]#---def move_matching_regexp(src, dest, regex) Dir.entries(dir).each do |name| File.rename(File.join(src, name), File.join(dest, name)) if name =~ regex endend#---def append_matching_regexp(dir, suffix, regex) Dir.entries(dir).each do |name| if name =~ regex File.rename(File.join(dir, name), File.join(dir, name+suffix)) end endend#---def each_matching_regexp(dir, regex) Dir.entries(dir).each { |name| yield name if name =~ regex }end#---def append_matching_regexp(dir, suffix, regex) each_matching_regexp(dir, regex) do |name| File.rename(File.join(dir, name), File.join(dir, name+suffix)) endend#---def delete_matching_regexp_recursively(dir, regex) Find.find(dir) do |path| dir, name = File.split(path) if name =~ regex ftype = File.directory?(path) ? Dir : File begin ftype.delete(path) rescue SystemCallError => e $stderr.puts e.message end end endend#---
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -