帮我写一个脚本 只保留/data/gbase/bakAisite目录下,30分钟以内创建的文件
时间: 2024-09-30 21:02:17 浏览: 31
你可以使用Bash脚本来完成这个任务,下面是一个简单的示例脚本,它会查找/data/gbase/bakAisite目录及其子目录下,在过去30分钟内创建的文件:
```bash
#!/bin/bash
# 定义目标目录和时间限制
dir="/data/gbase/bakAisite"
time_limit=$(( $(date +%s) - 1800 )) # 30分钟前的时间戳
find $dir -type f -newermt "$(date -d @$time_limit)" 2>/dev/null
```
这个脚本的工作原理是使用`find`命令,参数 `-type f` 指定查找的是文件而非目录,`-newermt` 后面跟着的时间戳表示文件需要新于指定的时间。如果找到符合条件的文件,它们将被打印出来;如果没有找到,则不会有任何输出。
保存此脚本到一个文件,例如 `keep_recent_files.sh`,然后赋予执行权限:
```bash
chmod +x keep_recent_files.sh
```
运行脚本:
```bash
./keep_recent_files.sh
```
如果你想要定期执行这个任务,可以将其添加到cron作业中。
相关问题
帮我写一个脚本 只保留/data/gbase/bakAisite目录下30分钟以内创建的文件并删除其他文件
当然可以。这是一个简单的bash shell脚本,它会找出`/data/gbase/bakAisite`目录下30分钟内创建的文件,并删除其他所有非新创建的文件。请注意,在实际操作前备份重要数据,因为这个脚本会在指定路径上执行删除动作。
```bash
#!/bin/bash
# 指定目录
dir="/data/gbase/bakAisite"
# 计算30分钟前的时间戳(单位:秒)
timestamp=$(date -d '30 minutes ago' +%s)
# 遍历目录中的所有文件和文件夹
find "$dir" -type f -atime +30m | while read file; do
# 只保留30分钟内创建的文件
if [[ $(stat -c %Y "$file") -gt $timestamp ]]; then
echo "Keeping file: $file"
else
echo "Deleting old file: $file"
rm -f "$file"
fi
done
# 打印完成信息
echo "Script finished."
帮我写一个脚本 只保留/data/gbase/bakAisite目录下,30分钟以内创建的文件,除此之外全部删除
你可以使用bash shell脚本来实现这个需求。下面是一个简单的Bash脚本示例,它将在当前目录中运行,并删除除指定目录(`/data/gbase/bakAisite`)内过去30分钟内创建的文件以外的所有其他文件:
```bash
#!/bin/bash
# 指定需要检查的目录
dir_to_check="/data/gbase/bakAisite"
# 计算30分钟前的时间戳(这里假设系统时区为UTC)
timestamp=$(( $(date -d '30 minutes ago' +%s) ))
# 遍历指定目录及其所有子目录下的文件
find "$dir_to_check" -type f -newermt "+$timestamp" ! -name ".*" | while read file; do
# 如果文件是在30分钟内创建的,跳过处理
if [[ -f $file && $(stat -c %Y $file) -ge $timestamp ]]; then
continue
fi
# 删除非符合条件的文件
rm "$file"
done
# 打印一条消息确认操作完成
echo "已完成清理操作,仅保留了/data/gbase/bakAisite目录下在过去30分钟内创建的文件."
阅读全文