递归打印所有目录和子目录

递归打印所有目录和子目录

我试图使用递归函数打印所有目录和子目录,但我只得到第一个目录。有什么帮助吗?

counter(){
    list=`ls $1`
    if [ -z "$(ls $1)" ]
    then 
        exit 0
    fi
    echo $list
    for file in $list
    do 
      if [ -d $file ]
      then 
            echo $file
            counter ./$file
      fi
    done
}

counter $1

答案1

您可以使用与此类似的东西:

#!/bin/bash

counter(){
    for file in "$1"/* 
    do 
    if [ -d "$file" ]
    then 
            echo "$file"
            counter "$file"
    fi
    done
}

counter "$1"

运行它以./script.sh .递归打印当前目录下的目录或给出要遍历的其他目录的路径。

相关内容