shell 递归调用自己


#!/bin/sh
if test "$2" = ""; then
echo "Usage: $0 basedir depth"
exit 1
fi

if test "$2" = "0"; then
exit 0
fi

for i in a b c d e f ; do
path="$1/$i"
mkdir $path || exit 1
sh $0 $path `expr $2 - 1` #这里:)
done
### Shell递归遍历常见文件夹 为了实现递归遍历文件夹,在Shell脚本中可以利用`find`命令或者编写自定义函数来完成这一功能。以下是两种方法的具体介绍。 #### 方法一:使用 `find` 命令 `find` 是 Unix/Linux 系统下非常强大的工具,能够按照指定条件查找文件和目录,并支持递归操作。对于简单的递归遍历需求来说,这是最为简便的方式之一[^2]。 ```bash #!/bin/bash # 使用 find 命令递归遍历当前目录下的所有文件和子目录 find . -type f -print0 | while IFS= read -r -d '' file; do echo "$file" done ``` 这段代码会打印出从当前位置开始的所有文件路径(不包括隐藏文件)。其中 `-print0` 和 `read -r -d ''` 的组合是为了确保即使文件名中含有特殊字符也能被正确处理。 #### 方法二:编写递归函数 除了借助外部命令外,也可以直接在 Bash 脚本内部定义递归函数来进行遍历。这种方式更加灵活,允许开发者根据具体业务逻辑整行为[^4]。 ```bash #!/bin/bash traverse_directory() { local dir=$1 for entry in "$dir"/*; do if [ -d "$entry" ]; then traverse_directory "$entry" # 对于子目录再次调用此函数 elif [ -f "$entry" ]; then echo "$entry is a regular file." fi done } # 开始遍历给定的根目录 root_dir="/path/to/start/directory" traverse_directory "$root_dir" ``` 上述例子展示了如何通过递归方式访问每个子项——无论是普通文件还是嵌套更深一层的新目录。每当遇到新的子目录时就会重复执行相同的操作直到整个树形结构都被覆盖完毕。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值