shell脚本实现遍历某个目录,筛选出小于10T的文件夹和文件,然后删除筛选结果
时间: 2024-01-22 19:19:13 浏览: 143
可以使用以下脚本实现:
```bash
#!/bin/bash
# 遍历目录
for file in /path/to/directory/*; do
# 判断是否为目录或文件
if [[ -d "$file" ]] || [[ -f "$file" ]]; then
# 获取文件大小
size=$(du -s "$file" | awk '{print $1}')
# 判断文件大小是否小于10T
if [[ "$size" -lt 100000000000 ]]; then
# 删除文件或目录
rm -rf "$file"
fi
fi
done
```
其中 `du -s` 命令可以获取目录或文件的大小,单位为字节。然后将其转换为 T 单位,判断大小是否小于 10T,如果是则删除。注意在删除时使用了 `-rf` 参数,可以递归地删除目录及其下的所有内容。
相关问题
shell脚本实现遍历某个目录下的所有文件和目录删选出小于10T的,然后删除
可以使用 `find` 命令来查找小于 10T 的文件和目录,再使用 `rm` 命令来删除它们。
以下是一个示例脚本:
```bash
#!/bin/bash
# 遍历目录并删除小于 10T 的文件和目录
find /path/to/directory -type f -size -10T -delete
find /path/to/directory -type d -size -10T -delete
```
解释一下:
- `find /path/to/directory`:指定要遍历的目录路径。
- `-type f`:限定查找的是文件类型。
- `-size -10T`:查找小于 10T 的文件或目录。
- `-delete`:删除匹配的文件或目录。
注意:
- 请谨慎使用此命令,因为它将永久删除文件和目录!
- 如果您想先查看匹配的文件或目录,请删除 `-delete` 选项,然后使用 `ls` 命令来查看。
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` 目录下所有四级子目录中的所有文件,并打印出它们的路径。你可以根据需要修改路径和文件名模式。
阅读全文