如何用子程序递归将当前目录下所有目录和文件由大写变为小写

sh/bash/dash/ksh/zsh等Shell脚本
回复
头像
lonelycorn
帖子: 438
注册时间: 2007-05-20 18:44
来自: 唐山,河北,中国
联系:

如何用子程序递归将当前目录下所有目录和文件由大写变为小写

#1

帖子 lonelycorn » 2008-08-18 21:59

就是在ABS中有个脚本能把当前目录下的文件都变成小写的。我给它加上递归。
其中DIR是存放这个脚本的目录。

代码: 全选

#!/bin/bash
DIR="/home/lonelycorn/tmp"
COMMAND=`basename $0`
for filename in *
do
    newfilename=`echo ${filename} | tr "A-Z" "a-z"`
    [[ "${newfilename}" != "${filename}" ]] && [[ "${filename}" != "tmp.sh" ]] && mv ${filename} ${newfilename}
    [ -d "${newfilename}" ] &&
    {
      cd "${newfilename}"
      ${DIR}/${COMMAND}
      cd ..
    }
done
现在我想将这个程序段作为另一个脚本的一个子程序运行,那么应该怎么修改?
上次由 lonelycorn 在 2008-08-18 22:42,总共编辑 3 次。
我逗无了奈了……
HP的本跑ubuntu还得把我折腾死。
显卡、无线/有线网卡、声卡、键盘……

代码: 全选

while :
do
  work_hard
done
头像
solcomo
帖子: 2838
注册时间: 2007-04-25 13:12

#2

帖子 solcomo » 2008-08-18 22:15

for filename in *
♜♞♝♛♚♝♞♜
♟♟♟♟♟♟♟♟
♙♙♙♙♙♙♙♙
♖♘♗♕♔♗♘♖

☠☯⚔⚓☣☦☃☕
☹☻☪☭☬⚖⚛⚜
ℜℳℬ™ ℋℯℓ℘ ℳℭ
sƂɐʍ рǀɹoʍ əɥʇ oS
头像
xiooli
帖子: 6956
注册时间: 2007-11-19 21:51
来自: 成都
联系:

#3

帖子 xiooli » 2008-08-18 22:15

rename 'y/A-Z/a-z/' *

要递归的话自己打主意
头像
lonelycorn
帖子: 438
注册时间: 2007-05-20 18:44
来自: 唐山,河北,中国
联系:

#4

帖子 lonelycorn » 2008-08-18 22:28

2楼的不管用。
阿,不管怎么样,现在我修改好了。多谢大家
我逗无了奈了……
HP的本跑ubuntu还得把我折腾死。
显卡、无线/有线网卡、声卡、键盘……

代码: 全选

while :
do
  work_hard
done
头像
solcomo
帖子: 2838
注册时间: 2007-04-25 13:12

#5

帖子 solcomo » 2008-08-18 22:34

要递归啊...
没看清
可以试试find . -exec
♜♞♝♛♚♝♞♜
♟♟♟♟♟♟♟♟
♙♙♙♙♙♙♙♙
♖♘♗♕♔♗♘♖

☠☯⚔⚓☣☦☃☕
☹☻☪☭☬⚖⚛⚜
ℜℳℬ™ ℋℯℓ℘ ℳℭ
sƂɐʍ рǀɹoʍ əɥʇ oS
头像
lonelycorn
帖子: 438
注册时间: 2007-05-20 18:44
来自: 唐山,河北,中国
联系:

#6

帖子 lonelycorn » 2008-08-18 22:41

solcomo 写了:要递归啊...
没看清
可以试试find . -exec
find . -exec 后面要接command的?
我逗无了奈了……
HP的本跑ubuntu还得把我折腾死。
显卡、无线/有线网卡、声卡、键盘……

代码: 全选

while :
do
  work_hard
done
头像
solcomo
帖子: 2838
注册时间: 2007-04-25 13:12

#7

帖子 solcomo » 2008-08-18 22:44

接rename呗
♜♞♝♛♚♝♞♜
♟♟♟♟♟♟♟♟
♙♙♙♙♙♙♙♙
♖♘♗♕♔♗♘♖

☠☯⚔⚓☣☦☃☕
☹☻☪☭☬⚖⚛⚜
ℜℳℬ™ ℋℯℓ℘ ℳℭ
sƂɐʍ рǀɹoʍ əɥʇ oS
头像
eexpress
帖子: 58428
注册时间: 2005-08-14 21:55
来自: 长沙

#8

帖子 eexpress » 2008-08-19 8:49

可是,怎么有人愿意用大写文件名呢?不好认,不好输入。
● 鸣学
头像
bones7456
帖子: 8495
注册时间: 2006-04-12 20:05
来自: 杭州
联系:

#9

帖子 bones7456 » 2008-08-19 9:22

EEXPRESS
关注我的blog: ε==3
头像
lonelycorn
帖子: 438
注册时间: 2007-05-20 18:44
来自: 唐山,河北,中国
联系:

#10

帖子 lonelycorn » 2008-08-19 9:36

怎么在程序里面调用?
就好比在C里面(不用自己建栈)写一个DFS那样。
我逗无了奈了……
HP的本跑ubuntu还得把我折腾死。
显卡、无线/有线网卡、声卡、键盘……

代码: 全选

while :
do
  work_hard
done
头像
eexpress
帖子: 58428
注册时间: 2005-08-14 21:55
来自: 长沙

#11

帖子 eexpress » 2008-08-19 9:38

system()?
● 鸣学
头像
lonelycorn
帖子: 438
注册时间: 2007-05-20 18:44
来自: 唐山,河北,中国
联系:

#12

帖子 lonelycorn » 2008-08-19 21:56

我明白了!只要在程序中直接调用就可以了。就像C,pascal中的那样。
我逗无了奈了……
HP的本跑ubuntu还得把我折腾死。
显卡、无线/有线网卡、声卡、键盘……

代码: 全选

while :
do
  work_hard
done
回复