shell脚本遍历复杂目录下子目录所有文件夹里的文件
时间: 2023-08-01 12:07:55 浏览: 153
你可以使用以下的 shell 脚本来遍历复杂目录下子目录所有文件夹里的文件:
```bash
#!/bin/bash
# 定义遍历目录的函数
function traverse() {
for file in "$1"/*; do
if [[ -d "$file" ]]; then
if [[ "$file" == /path/to/directory/*/*/*/* ]]; then
traverse "$file"
fi
else
echo "$file"
fi
done
}
# 调用遍历函数
traverse /path/to/directory
```
这个脚本会遍历 `/path/to/directory` 目录下所有四级子目录中的所有文件,并打印出它们的路径。你可以根据需要修改路径和文件名模式。
相关问题
shell脚本遍历四级目录下所有文件夹里的文件
你可以使用以下的 shell 脚本来遍历四级目录下所有文件夹里的文件:
```bash
#!/bin/bash
# 定义遍历目录的函数
function traverse() {
for file in "$1"/*; do
if [[ -d "$file" ]]; then
if [[ "$file" == /path/to/directory/*/*/* ]]; then
traverse "$file"
fi
else
echo "$file"
fi
done
}
# 调用遍历函数
traverse /path/to/directory
```
这个脚本会遍历 `/path/to/directory` 目录下四级子目录中的所有文件,并打印出它们的路径。你可以根据需要修改路径和文件名模式。
shell脚本实现遍历某个目录下所有的目录和子目录下的文件和文件夹,筛选出小于10T的文件夹和文件,然后删除筛选结果
可以使用以下脚本实现:
```bash
#!/bin/bash
# 定义函数,递归遍历目录和子目录下的文件和文件夹
function traverse() {
for file in `ls $1`
do
if [ -d "$1/$file" ] # 如果是目录,递归遍历
then
traverse "$1/$file"
else
size=`du -sk "$1/$file" | awk '{print $1}'` # 获取文件大小
if [ $size -lt 10240 ] # 如果小于10T,删除文件
then
rm -rf "$1/$file"
echo "删除文件:$1/$file"
fi
fi
done
}
# 调用函数,传入目录路径
traverse "/path/to/directory"
```
其中,`du -sk` 命令用于获取文件或文件夹的大小(单位为KB),`awk '{print $1}'` 用于提取出大小值(去掉单位)。`-lt` 表示小于,`10240` 表示10T的大小(单位为KB)。`rm -rf` 命令用于删除文件或文件夹。
阅读全文