在做实验的时候,由于每次都要手工修改文件夹的名字,实在是给自己添了太多的麻烦,为了摆脱手工修改的困恼,于是产生了一个使用程序批量修改文件夹名字的好主意。为了最终实现这个目标,自然需要选择一种合适的脚本语言,恰好目前对Ruby十分感兴趣,于是“兴趣+需求”,诞生了一个不算过于丑陋的Ruby程序(自以为)。

(一)功能需求

首先来说一下我的需求:在程序运行的根目录(记为LDAModel)下有50个子文件夹(名字分别为21-70,为什么不是从1开始呢?),而每个子文件夹下又有若干个子文件夹,其名字分为两类,分别是20和20(i),如下图所示:

Ruby学习笔记(一)

而其中名为20的文件夹并不一定存在,如果不存在的话则在每次程序运行的时候将20(i)中的一个转换为20。

此外,20(i)的文件夹中的数据可能会出现错误,如果其中的文件数量小于6,则无法使用,因此应该将这类文件夹直接删除!

 (二)代码及说明

 接下来展示一下满足上述需求的代码:

 1 require 'fileutils'
 2 def rename (folder)
 3     # Dir.foreach(folder) do |file|
 4     #     puts file if File.directory?(file) && Dir.
 5     # end
 6     queryFolders = Dir.entries( folder ).delete_if {|e| e=~ /^\..*/ || !File.directory?(e)}
 7     queryFolders.each{ |e|
 8         tFolder = Dir.entries(e).delete_if{ |e| e=~/^\..*/}    
 9         tFolder.each{|model| 
10             FileUtils.rm_rf("./#{e}/#{model}") if Dir.entries("./#{e}/#{model}").delete_if{|e1| e=~ /^\..*/ }.length()<6
11         }
12         # break;
13         next if tFolder.include?("20")
14         if (unRenameFolder = tFolder.each{|e| e=~ /20\(d{1,3}\)/}).length > 0
15             File.rename("./#{e}/#{unRenameFolder[0]}","./#{e}/20")
16         end
17     }
18 end
19 
20 # puts File.dirname(__FILE__)
21 
22 rename(File.dirname(__FILE__))
View Code

相关文章:

  • 2022-12-23
  • 2021-08-05
  • 2022-02-13
  • 2021-10-16
  • 2022-03-04
  • 2021-05-20
  • 2021-12-27
  • 2022-02-20
猜你喜欢
  • 2021-08-23
  • 2022-03-03
  • 2021-08-20
  • 2021-11-23
相关资源
相似解决方案