用shell帮我写一个磁盘清理脚本
时间: 2023-05-24 14:06:51 浏览: 210
以下是一个简单的磁盘清理脚本示例,可以通过定义阈值来删除旧的或不必要的文件。脚本会遍历指定目录并删除特定扩展名或文件类型的文件。
```sh
#!/bin/bash
# 定义目标目录和阈值值
dir="/path/to/directory"
threshold=80
# 遍历目标目录
for file in "$dir"/*
do
# 判断文件是否为文件夹或者符号链接,如果是则跳过此次循环
[ -d "${file}" ] || [ -L "${file}" ] && continue
# 获取文件的大小和最后修改时间
size=$(du -sh "${file}" | awk '{print $1}')
last_modified=$(stat -c '%y' "${file}")
# 检查是否应该删除文件
if [ "$(df -P "${file}" | awk 'NR==2 {print $5+0}')" -gt "${threshold}" ] && [[ "${file}" = *".log" ]] || [[ "${file}" = *".bak" ]] || [[ "${file}" = *".tmp" ]] || [[ "${file}" == *"core."* ]]; then
echo "Deleting ${file} (size:${size}, last modified:${last_modified})"
rm -f "${file}"
fi
done
echo "Disk cleaning completed!"
```
这个脚本遍历“/path/to/directory”目录中的所有文件,并按大小和最后修改时间进行排序(最近修改的文件将不会被删除)。只有当文件大小达到阈值,并且文件名包含“.log”,“.bak”,“.tmp”或以“core.”开头时,才会删除它。删除命令使用“rm -f”来避免交互式确认。
要使用脚本,请将其保存为文件(例如“disk_clean.sh”),将“/path/to/directory”替换为要清理的目标目录,将“threshold”替换为阈值以及要检查和删除的文件类型,然后运行以下命令:
```
chmod +x disk_clean.sh
./disk_clean.sh
```
阅读全文