gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 05:06:19 25 4
gpt4 key购买 nike

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

#!/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 *

最佳答案

一些注意事项:

您使用全大写的 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 的单个调用中。

关于linux - 删除目录中所有文件然后发送电子邮件的脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7725151/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com