文件夹下所有文件及子文件夹将文件名小写
最近领导要求将服务器上的文件以及以下所有子文件夹下所有东西都小写。网上狂搜各种方法,未果,索性自己编写一个Java解决。
import java.io.File; public class AllRename { public static void main(String args[]) { String RenamePath=args[0]; File dir = new File(RenamePath); RenameAllFiles(dir); } private static void RenameAllFiles(File dir) { // TODO Auto-generated method stub File[] fs = dir.listFiles(); for (int i = 0; i < fs.length; i++) { File s=new File(dir+"\\"+fs[i].getName().toLowerCase()); fs[i].renameTo(s); if (fs[i].isDirectory()) { try { RenameAllFiles(fs[i]); } catch (Exception e) { System.out.println("System Error!"+fs[i]); } } } } }
后来同事又给了我新的2个方法,分别是perl和shell;
#!/usr/bin/perl -w sub f { ($path) = @_; foreach my $file (glob "$path/*"){ my $newfile = lc($file); if(($file eq ".") || ($file eq "..")) { return 1; } if(-e $file) { rename $file, $newfile; &f($newfile); } else { rename $file, $newfile; } } } f('.');
shell
find . | tac | gawk '{x=tolower($0);}x!=$0{print "mv","\047"$0"\047","\047"x"\047"}'|sh
代码基本都解决特殊字符的问题,比如括号(我在环境中就问题这样的问题,真不知道哪个2B干的好事...哎)