sh/bash/dash/ksh/zsh等Shell脚本
eexpress
帖子: 58428 注册时间: 2005-08-14 21:55
来自: 长沙
#1
帖子
由 eexpress » 2005-11-08 14:31
想要在一个目录下递归找到最末端的目录,就是没有子目录的那些。
没想清楚啊。那位帮忙。
● 鸣学
eexpress
帖子: 58428 注册时间: 2005-08-14 21:55
来自: 长沙
#2
帖子
由 eexpress » 2005-11-08 14:56
代码: 全选
#!/bin/bash
#search most-end directory
function fnd0() {
for i in `ls $1`; do
#echo $i+"------------all"
if [ -d $i ]; then
fnd0 $i
fi
done
echo $i
return 0
}
find0 .
● 鸣学
oneleaf
论坛管理员
帖子: 10455 注册时间: 2005-03-27 0:06
系统: Ubuntu 12.04
#3
帖子
由 oneleaf » 2005-11-08 15:00
这个可以列出全部的目录
ls -R * |grep :
然后循环一下,检查当前行在下一行是否存在,如果存在,则放弃,否则就是无子目录的目录。
eexpress
帖子: 58428 注册时间: 2005-08-14 21:55
来自: 长沙
#4
帖子
由 eexpress » 2005-11-08 15:43
这个知道。就是还要一个大循环再检测下层目录有没有。也麻烦。
● 鸣学
eexpress
帖子: 58428 注册时间: 2005-08-14 21:55
来自: 长沙
#5
帖子
由 eexpress » 2005-11-08 16:35
代码: 全选
#!/bin/bash
#search most-end directory
function fnd0() {
cd $1
# echo now\ in\ path\ --`pwd`
for i in `ls -A`; do
# echo 'search in '$1
if [ -d $i ]; then
# echo enter\ path\ --$i
# cd $i
fnd0 $i
# cd ..
fi
done
# echo found\ most-end\ direcotry\ is\ ------------------`pwd`
echo `pwd`
cd ..
# return 0
}
[! -d $1] && exit 1
exit 0
#end
● 鸣学
eexpress
帖子: 58428 注册时间: 2005-08-14 21:55
来自: 长沙
#6
帖子
由 eexpress » 2005-11-08 16:46
代码: 全选
ls -RQ * |grep :$|sed 's/:$//'|sed 's/\ /\\\ /'
● 鸣学