需要脚本帮忙

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
论坛管理员
帖子: 10441
注册时间: 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
来自: 长沙

差不多了。哎,上面的退出function时,怎么处理哦

#6

帖子 eexpress » 2005-11-08 16:46

代码: 全选

ls -RQ * |grep :$|sed 's/:$//'|sed 's/\ /\\\ /'
● 鸣学
回复