使用-delete查找命令始终返回状态码0

时间:2017-10-02 13:35:56

标签: bash find

我正在编写一个与cron一起使用的小型bash脚本来备份数据库。 当我搜索旧备份(超过180天)时,find命令将删除它们。

它会删除它们,但是当它确实删除时,它都会返回0。

echo $?

{{1}}总是返回0,即使它没有删除任何内容(应该只在前几个月发生)。 有什么我做错了吗?

1 个答案:

答案 0 :(得分:1)

好吧..这是我现在能想到的最好的解决方案:

# Delete db backup older than 180+ days
find ${BDIR} -maxdepth 1 -type f -mtime +180 -printf "%f\n" > $FDEL
if [[ $? -eq 0 && $(wc -l <"$FDEL") -gt 0 ]]; then
  cd $BDIR
  xargs -d '\n' -a $FDEL rm
  LOG+=" - Old DB backup deleted"
else
  LOG+=" - No Old DB backup to delete"
fi
rm $FDEL

我将结果打印到文件,然后移动到备份文件夹并删除列表中的每个文件。 创建的文件必须大于0字节,这意味着它不是空的,应该删除里面的内容。