我目前的脚本是:
#!/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 {} \;
这个,是可以成功的。。
求指点
找到问题了,循环那里应该这样写:
for dir in ${dirs[@]}; do
$dirs 并不能获取到完整的数组。
1
Mohanson 2020-08-14 15:00:30 +08:00
```
$ apt install tmpreaper ``` |
2
s609926202 OP @Mohanson 应该是数组定义和循环有问题,并不是删除语句不能成功。。
|
3
s609926202 OP 找到问题了,循环那里应该这样写:
``` for dir in ${dirs[@]}; do ``` |
4
calmzhu 2020-08-14 15:23:24 +08:00
数组遍历就不对
$ 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 |
5
wangyzj 2020-08-14 15:23:38 +08:00
find /home -mtime +7 -exec rm {} \\;
尝试后面多加一个反斜线 |
6
webs 2020-08-16 10:03:30 +08:00
find 后面可以带多个目录
|