脚本删除目录中的所有文件然后发送电子邮件

时间:2011-10-11 11:14:42

标签: linux bash shell

需要一个脚本来删除目录中的所有文件,然后在完成后发送电子邮件,我将以下作为模板,但不确定这是否有效 - 当然没有添加电子邮件组件!

#!/bin/sh
DIR="/var/www/public_html/docs/files/"
LIST=`ls -l $DIR | grep -v "total 0"`
FILES=`ls $DIR`
cd $DIR
if [ -z "$LIST" ]
then
  exit
else
  echo "Files Delete:"
  echo $FILES
  rm -f *
fi

更新

#!/bin/sh
DIR="/home/test/test/docs/test/"
cd $DIR
rm -f *

1 个答案:

答案 0 :(得分:1)

一些注意事项:

您使用全大写DIR,LIST和FILES,但是根据惯例,shell脚本中的全大写变量是环境变量。你应该使用例如。

dir='/var/www/public_html/docs/files/'

代替。

要查找目录中有多少文件,请使用

find "$dir" -maxdepth 1 -type f | wc -l

你同时使用LIST和FILES;在删除之前,您似乎想知道是否有任何文件。从功能的角度来看,这没有任何意义,但如果你必须有条件地回应文件列表,最好以这种方式做出决定。

if [ $(find "$dir" -type f | wc -l) -gt 0 ] ; then
    echo Files Delete:
    find "$dir" -printf '%f '
fi

虽然您应该知道此输出无法可靠地用于重建实际文件名。

要实际删除文件,请再次使用find

find "$dir" -maxdepth 1 -type f -delete

全部放在一起

dir='/var/www/public_html/docs/files/'

if [ $(find "$dir" -type f | wc -l) -gt 0 ] ; then
    echo Files Delete:
    find "$dir" -maxdepth 1 -type f  -printf '%f ' -delete
fi

在这里,我将“打印文件”和“删除文件”步骤合并为find的单个调用。