|
请教高手写个脚本来统计给定目录(含子目录)下不同文件种类的个数的脚本。
如运行:collection.sh /mnt/tmp All
结果:Directory:10 Regular File:20 Link File:0 Pipe:0 Block:0 Char:0 Other:0
我写了个,不过在递归调用时值传递有问题,不解。
这个问题主要在以下2点:
1 .递归函数(search_type)值如何使用数组返回;
2 .如何获得返回的值(通过什么形式比较好 ?echo?echo会存在多次返回值的情况)。
希望各位能给小弟一点指点
2009-10-21:
经过下小弟的研究,现已经实现部分功能,只是还不支持含有空格的文件名称:结果如下:- ./collections_20091021.sh ./xxx1/ All
- ----------------------------------------
- Reg: 3
- Dir: 2
- Link: 2
- Pipe: 0
- Char: 0
- Block: 0
- Socket: 0
- Others: 2
- ----------------------------------------
- Totals: 9
复制代码 希望能再完善此脚本,提高脚本执行效率,简化脚本,发现任何问题请指出,谢谢。
还有有以下问题:
1.如何解决文件名含空格的情况?
2.Link的文件夹想归并到Link种类,怎么判断此文件夹为Link的?(使用-d判断为目录)--已解
对了,看到一篇文章相当不错,有关shell递归的,推荐感兴趣的朋友看看:
http://www.ibm.com/developerworks/cn/linux/l-cn-bashrecur/
2009-10-23
今天终于发现问题所在了,下面是0.0.1版的修正版0.0.3,效率较0.0.2要高不少:
见0.0.3版代码加粗部分,将"/bin/ls $Path | while read"换成for循环就不存在值传递问题,不解,为什么?期待高人解答。。。。。。 |
|