我有一个脚本,我每周都会通过一个cron删除我的网络服务器上的临时文件,但我只是注意到脚本没有删除仍占用空间的文件夹。
最好修改脚本以删除文件夹?
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
的符号链接 - 脚本是否遵循符号链接,或者我应该将其硬编码到挂载?
答案 0 :(得分:0)
您需要在脚本中向rm
命令传递其他选项。实际上你需要rm -rf
。我建议你去man 1 rm
。
答案 1 :(得分:0)
改变这个:
find $DOCSJS -type f -mtime +5 -exec rm
为:
find $DOCSJS -type f -mtime +5 -exec rm -Rf
答案 2 :(得分: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
作为目录
答案 3 :(得分:0)
目前您无法删除目录,因为find
的输出仅限于文件。您应该删除此选项,以便将旧文件和目录都传递给rm -rf
find $DIR -mtime +5 -exec rm -rf {} \;
这将保留其中包含新文件的旧目录(但它将删除旧文件),但要删除两者都旧的文件和目录。