2

我有一个每周通过 cron 运行的脚本,该脚本会删除我的 Web 服务器上的大量临时文件,但我刚刚注意到该脚本并未删除仍占用空间的文件夹。

修改脚本以删除文件夹的最佳方法是什么?

find /my/path/ -type d –ctime +5 –exec rm -r {} \;

#!/bin/bash
# Deletes temp files older then 5 days
DOCS='/var/www/user/docs/temp'
SCRATCH='/var/www/user/temp/scratch'

if [ -d "$DOCS" ]; then
find $DOCSJS -type f -mtime +5 -exec rm -rf {} \; > /tmp/docs.txt
fi
if [ -d "$SCRATCH" ]; then
find $SCRATCH -type f -mtime +5 -exec rm -rf {} \; > /tmp/docs.txt
fi

我的脚本实际上有 -rf 作为删除所有文件夹的标志。

需要注意的一点是,上面的文件夹是符号链接,/mnt/sdb1/docs/js并且/mnt/sdb1/temp/scratch- 脚本会跟随符号链接还是我应该将其硬编码到挂载?

4

4 回答 4

0

您需要将其他选项传递给rm脚本中的命令。其实你需要rm -rf. 我建议去man 1 rm

于 2013-04-17T09:25:19.640 回答
0

改变这个:

find $DOCSJS -type f -mtime +5 -exec rm

到:

find $DOCSJS -type f -mtime +5 -exec rm -Rf
于 2013-04-17T09:28:42.707 回答
0

改变这个

if [ -d "$SCRATCH" ]; then
find $SCRATCH -type f -mtime +5 -exec rm -rf {} \; > /tmp/docs.txt
fi

进入

if [ -d "$SCRATCH" ]; then
find $SCRATCH -type d -mtime +5 -exec rm -rf {} \; > /tmp/docs.txt
fi

-type f您只使用标志搜索文件;用于-type d目录

于 2013-04-17T09:52:18.420 回答
0

目前您无法删除目录,因为输出find仅限于文件。您应该删除此选项,以便将旧文件和目录都传递给rm -rf

find $DIR -mtime +5 -exec rm -rf {} \;

这将保留其中包含新文件的旧目录(但它会删除旧文件),但会删除两者都是旧的文件和目录。

于 2013-04-17T09:54:14.060 回答