技术解析

请教:如何遍历指定目录,删除指定天数以上的文件?
0
1975-02-23 20:00:53
idczone

我目前的脚本是:

#!/bin/bash
#---------------------
# OPTIONS
#----------------------

DAYS_TO_KEEP=30

# 待删除目录
dirs[0]="/home/wwwroot/dir1"
dirs[1]="/home/wwwroot/dir2"

# 遍历
for dir in $dirs; do
  if [ "$DAYS_TO_KEEP" -gt 0 ] ; then
    echo "Deleting file older than $DAYS_TO_KEEP days"
    find $dir/* -mtime +$DAYS_TO_KEEP -exec rm {} \;
  fi
done

但是运行后并没有执行成功,也没报错什么的,,,如果单单运行:

find $dir/* -mtime +$DAYS_TO_KEEP -exec rm {} \;

这个,是可以成功的。。

求指点


```
$ apt install tmpreaper
```

应该是数组定义和循环有问题,并不是删除语句不能成功。。

找到问题了,循环那里应该这样写:
```
for dir in ${dirs[@]}; do
```

数组遍历就不对
$ dirs[0]="/home/wwwroot/dir1"
$ dirs[1]="/home/wwwroot/dir2"
$ echo $dirs
/home/wwwroot/dir1
$ echo ${dirs[*]}
/home/wwwroot/dir1 /home/wwwroot/dir2
然后可以直接遍历的
for dir in dir1 dir2 dir3
do

find /home -mtime +7 -exec rm {} \\;
尝试后面多加一个反斜线

find 后面可以带多个目录

数据地带为您的网站提供全球顶级IDC资源
在线咨询
专属客服