需要一个脚本来删除目录中的所有文件,然后在完成后发送电子邮件,我将以下作为模板,但不确定这是否有效 - 当然没有添加电子邮件组件!
#!/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 *
答案 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
的单个调用。