linux - 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
解决方案
要获取路径中的所有文件夹,您只需执行以下操作:
find /home/neo -type d > /home/neo/Desktop/exercise1/backup.txt
完毕
推荐阅读
- java - 在另一个类的访问器中从不同的类调用方法(作业)
- linux - 执行脚本时出现“不明确的重定向”错误
- javascript - 如果文件 A 不存在,如何导入文件 B?
- angular - 如何使用 Nativescript 自动保存 formControlName
- tensorflow - Keras 中的自定义模型在第一次运行时无法适应
- css - 手机上猫头鹰旋转木马的高度
- excel - 在 VBA 用户窗体中使用 RefEdit_Change 事件时出现故障
- php - PHP mongodb聚合查询:未找到结果字段
- javascript - ng-options 创建模型的新实例,而不是从数据源中获取一个
- node.js - 在 Node Js 中正确导出 .mat 格式以供 Matlab 或 GNUBackgammon 读取