すべてのディレクトリとサブディレクトリを繰り返し印刷します。

すべてのディレクトリとサブディレクトリを繰り返し印刷します。

再帰関数を使用してすべてのディレクトリとサブディレクトリを印刷しようとしますが、最初のディレクトリのみを取得します。助けが必要ですか?

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 .現在のディレクトリの下にあるディレクトリを繰り返し印刷するか、移動する他のディレクトリへのパスを指定するには、それを実行します。

関連情報