shell脚本实现遍历某个目录下所有的目录和子目录下的文件和文件夹,筛选出小于10T的文件夹和文件,然后删除筛选结果
时间: 2024-01-22 20:19:24 浏览: 135
可以使用以下脚本实现:
```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` 命令用于删除文件或文件夹。
相关问题
shell脚本实现遍历某个目录下所有的目录和文件,筛选出小于10T的文件夹和文件,然后删除筛选结果
你可以使用以下 shell 脚本来实现:
```
#!/bin/bash
# 遍历目录下所有的目录和文件
for file in $(find /path/to/directory -type f -o -type d)
do
# 判断文件或目录大小是否小于10T
if [ $(du -s $file | awk '{print $1}') -lt 100000000000 ]; then
# 删除文件或目录
rm -rf $file
fi
done
```
其中,`/path/to/directory` 是你要遍历的目录路径,`-type f -o -type d` 表示同时筛选文件和目录,`du -s $file | awk '{print $1}'` 用于获取文件或目录的大小,单位为字节。如果大小小于 `100000000000` 字节(即小于 10T),则执行删除操作。请注意,删除操作是不可逆的,请谨慎操作。
shell脚本实现遍历某个目录,筛选出小于10T的文件夹和文件,然后删除筛选结果
可以使用以下脚本实现:
```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` 参数,可以递归地删除目录及其下的所有内容。
阅读全文