编写一个shell脚本,可以删除/backup目录下面创建时间超过3天的一级目录,不包括子目录,这些目录里面可能会有文件 ,如果目录里有文件 的话也直接删除,不需要人工确认
时间: 2023-08-31 14:38:08 浏览: 77
### 回答1:
编写一个 shell 脚本如下:
```bash
#!/bin/bash
# 设置时间戳,3 天之前的时间
timestamp=$(date -d "-3 days" +%s)
# 遍历 /backup 目录下的一级目录
for dir in /backup/*
do
# 如果目录创建时间早于 3 天之前的时间,则删除该目录
if [ "$(stat -c %Y "$dir")" -lt "$timestamp" ]
then
rm -rf "$dir"
fi
done
```
上面的脚本会删除 /backup 目录下的所有一级目录,如果这些目录有文件的话,也会被删除。它会检查目录的创建时间,如果早于 3 天之前的时间,则删除该目录。
注意:上面的脚本不会删除子目录,只会删除一级目录。如果需要删除子目录,可以使用 `find` 命令来遍历所有目录并删除。
### 回答2:
编写一个shell脚本实现删除/backup目录下创建时间超过3天的一级目录及其包含的文件。可以使用find命令结合参数和删除命令实现。
脚本内容如下:
```bash
#!/bin/bash
dir="/backup"
# 找到创建时间超过3天的一级目录,并将其删除
find "$dir" -maxdepth 1 -type d -ctime +3 -exec rm -rf {} \;
# 找到创建时间超过3天的文件,并将其删除
find "$dir" -type f -ctime +3 -exec rm -f {} \;
```
脚本说明:
- 使用变量`dir`指定目标目录为/backup。
- 通过find命令,使用参数`-maxdepth 1`限制只搜索一级目录,`-type d`表示只搜索目录。
- 参数`-ctime +3`指定搜索创建时间超过3天的目录。
- 找到符合条件的目录后,使用`-exec`参数和删除命令`rm -rf`将其删除,`{}`是find命令的占位符。
- 接着,再次使用find命令,通过参数`-type f`搜索创建时间超过3天的文件。
- 找到符合条件的文件后,同样使用`-exec`参数和删除命令`rm -f`将其删除。
这样,运行该脚本,即可自动删除/backup目录下创建时间超过3天的一级目录及其包含的文件,无需人工确认。
### 回答3:
可以使用以下内容作为shell脚本来实现删除/backup目录下创建时间超过3天的一级目录的功能:
```bash
#!/bin/bash
backup_dir="/backup"
# 切换到/backup目录
cd $backup_dir
# 查找超过3天的一级目录
find . -type d -maxdepth 1 -mtime +3 | while read -r dir; do
# 删除目录及其内容
rm -rf "$dir"
done
```
这个脚本将首先切换到/backup目录下,然后使用`find`命令来查找/backup目录下创建时间超过3天的一级目录(不包括子目录)。接着使用循环结构来逐个删除这些目录及其内容。
注意:在这个脚本中使用了`rm -rf`命令来删除目录及其内容,这意味着目录里面的所有文件和子目录都将被删除且无需人工确认。如果目录里有重要文件,请谨慎运行该脚本。