shell脚本实现遍历某个目录下的所有文件和目录删选出小于10T的,然后删除
时间: 2024-01-22 12:19:10 浏览: 66
可以使用 `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脚本实现遍历某个目录下所有的目录和子目录下的文件和文件夹,筛选出小于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` 命令用于删除文件或文件夹。
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),则执行删除操作。请注意,删除操作是不可逆的,请谨慎操作。
阅读全文