我必須遞歸地搜索所有子目錄並打印*(*號的深度=文件/目錄的深度)類型和名稱。問題出現在我輸入目錄然後想離開但沒有任何反應時。從遞歸返回的bash
我的測試文件
DIR test
*FILE ace
*FILE base
*DIR father
**FILE cookies
*DIR mother
**DIR how
***FILE youdoing
*FILE zebra
我的代碼
MAXDEPTH是多遠到DIR可以去(默認值3)和currDepth開頭
function tree(){
maxDepth=$2
currDepth=$3
#print the starting file
if [ "$currDepth" -eq 0 ];then
printf "%s %s\n" DIR "$1"
currDepth=1
fi
for path in "$1"/*;do
for i in $(seq 1 $currDepth);do
echo -n *
done
if [ -d "$path" ];then
printf "%s %s\n" DIR "${path##*/}"
if [[ "$currDepth" -lt "$maxDepth" ]];then
tree "$path" "$maxDepth" "$((currDepth + 1))"
fi
continue
fi
if [ -f "$path" ];then
printf "%s %s\n" FILE "${path##*/}"
continue
fi
if [ -L "$path" ];then
printf "%s %s\n" LINK "${path##*/}"
continue
fi
done
}
是1我輸出
DIR test
*FILE ace
*FILE base
*DIR father
**FILE cookies
**DIR mother
***DIR how
***FILE zebra
我在做什麼錯了
你做錯了一件事是你應該使用find命令 – Kevin
它特別說我應該使用遞歸 – TheGuyWithStreetCred
這個函數不是遞歸的。它不會調用'tree',它只是調用'printf tree ...'。 – kojiro