# charset="CP932" # encoding="CP932" # File も Directory も纏めて UPPER/lower/CapWords する。 # DropUpercase # は再帰的でないので # こんなに雜でいいのだらうか…… #!/usr/bin/env perl require 5.002; use strict; use subs qw{ mac cw dirlist($) asyoulike($) }; use vars qw{ $opt_r }; use Getopt::Std; getopts('r:'); $opt_r or die "Usage: $0 -r=[ mac, cw, lc, uc ] mac: Macintosh friendly. cw: Cap Words. lc: lowercase. uc: UPPERCASE. "; $_{sep} = $^O =~ /MacOS/ ? ':' : $^O =~ /DOS|Win32|OS2/i ? '\\' : '/'; sub cw { join ' ', map ucfirst lc, split ' ', $_[0]; } sub mac { join ' ', split /[^-\x80-\xFF.a-zA-Z0-9]+/, $_[0]; } sub dirlist($) { opendir DIR, $_[0] or die; for (grep !/^\./, readdir DIR) { asyoulike(join $_{sep}, $_[0], $_); } closedir DIR; } sub asyoulike($) { -d $_[0] and dirlist $_[0]; ($_[1] = $_[0]) =~ s#([^:/\\]+)$# &{$opt_r}($1) #e; rename @_ or warn "0:$_[0]\n1:$_[1]\n$!"; } asyoulike $_{arg} while defined($_{arg} = shift); __END__ #!/usr/bin/env python import os import string import sys def clu(case='-c'): return lambda s: { '-c': string.capwords(s), '-l': string.lower(s), '-u': string.upper(s), # ISO 9660 }[case] def capitalize(f): d, b = os.path.split(f) b = chcase(b) os.rename(f, os.path.join(d, b)) def ls(d): for i in os.listdir(d): n = d + os.sep + i if os.path.isdir(n): ls(n) elif os.path.isfile(n): capitalize(n) capitalize(d) def usage(): print "Usage:", sys.argv[0], """-[clu] files... -c: capwords -l: lower -u: upper (ISO 9660) """ sys.exit() if __name__ == '__main__': if len(sys.argv) < 2: usage() global chcase chcase = clu(sys.argv[1]) if not chcase: usage() for i in sys.argv[2:]: if os.path.isdir(i): ls(i) elif os.path.isfile(i): capitalize(i)