首页 > 解决方案 > BASH 中的递归

问题描述

我的任务是创建脚本,列出用户目录中的所有子目录并将它们写入文件。

我创建了一个递归函数,它应该从 main 遍历所有目录并将其子目录的名称写入文件中。但是该脚本针对我的主目录中的第一个文件夹运行,直到到达没有子文件夹的文件夹。我该如何正确地做到这一点?

#!/bin/bash
touch "/home/neo/Desktop/exercise1/backup.txt"
writeFile="/home/neo/Desktop/exercise1/backup.txt"
baseDir="/home/neo"

print(){
    echo $1
    cd $1
    echo "============">>$writeFile
    pwd>>$writeFile
    echo "============">>$writeFile
    ls>>$writeFile
    for f in $("ls -R")
    do
        if [ -d "$f" ]
        then
            print $1"/"$f
        fi
    done
}

print $baseDir

标签: linuxbashfunctionrecursion

解决方案


要获取路径中的所有文件夹,您只需执行以下操作:

find /home/neo -type d > /home/neo/Desktop/exercise1/backup.txt

完毕


推荐阅读