整个目录树中的文件名大写转小写……

[QUOTE]最初由 dearvoid 发布
[B]
删除最后一行,也就是顶级目录 [/B][/QUOTE]
晕!把它看成一个变量了.怪不得看不懂.      
呵呵~见笑了,哪里神秘呀!是我的编程习惯特烂,代码写的象涂鸦一样:

佩服版主,纯用shell来写我是写不来,甘败下锋.不过我还是觉得借助awk & sed 效率能快些:

修改一下:
复制内容到剪贴板
代码:
#!/bin/bash
#programname: ul
#调用:  ul yourdir tolower
#       ul yourdir toupper
#
[ $# -ne 2 ] && exit

if [ ! -d $1 ];then
  echo $1" not fond.";exit
fi

if [ "$2" != "toupper" -a "$2" != "tolower" ];then
  echo $2" ERROR.";exit
fi

find $1|sort -r\
       |sed 's/.*/mv -fi "&" "&"/;$d'\
       |awk -F"/" '{OFS="/"}{$NF='$2'($NF);print $0" 2>/dev/null"}'\
       |sh
echo $1|awk '{print "mv -fi "$0" "'$2'($0)" 2>/dev/null"}'\
       |sh
echo "ok."
有空格的文件名也能处理了.      
没有严格测试过 sort -r 的效果,不过我觉得还是用 tac 或者 find -depth 好些
(note: 经测试,sort -r 的结果跟 tac 并不相同)      
[QUOTE]最初由 dearvoid 发布
[B]没有严格测试过 sort -r 的效果,不过我觉得还是用 tac 或者 find -depth 好些
(note: 经测试,sort -r 的结果跟 tac 并不相同) [/B][/QUOTE]

sort -r的确多此一举了,find yourdir -depth最好,sort -r 与tac我也未认真测过,不过此脚本里应该没问题的.

呵呵~~还是经不住推敲啊~~shell魅力即在于此.      
tac 就是将文件反序输出(cat <--> tac),sort -r 效果却不同