分页: 1 / 1

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

发表于 : 2008-08-18 21:59
lonelycorn
就是在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
现在我想将这个程序段作为另一个脚本的一个子程序运行,那么应该怎么修改?

发表于 : 2008-08-18 22:15
solcomo
for filename in *

发表于 : 2008-08-18 22:15
xiooli
rename 'y/A-Z/a-z/' *

要递归的话自己打主意

发表于 : 2008-08-18 22:28
lonelycorn
2楼的不管用。
阿,不管怎么样,现在我修改好了。多谢大家

发表于 : 2008-08-18 22:34
solcomo
要递归啊...
没看清
可以试试find . -exec

发表于 : 2008-08-18 22:41
lonelycorn
solcomo 写了:要递归啊...
没看清
可以试试find . -exec
find . -exec 后面要接command的?

发表于 : 2008-08-18 22:44
solcomo
接rename呗

发表于 : 2008-08-19 8:49
eexpress
可是,怎么有人愿意用大写文件名呢?不好认,不好输入。

发表于 : 2008-08-19 9:22
bones7456
EEXPRESS

发表于 : 2008-08-19 9:36
lonelycorn
怎么在程序里面调用?
就好比在C里面(不用自己建栈)写一个DFS那样。

发表于 : 2008-08-19 9:38
eexpress
system()?

发表于 : 2008-08-19 21:56
lonelycorn
我明白了!只要在程序中直接调用就可以了。就像C,pascal中的那样。