检查后如何从数组中删除文件?

问题描述 投票:0回答:1

我有这个代码:

#!/bin/bash
path="/home/asdf"
dateminusoneday=$(date +%m --date='-1 month')
date=$(date +"%Y-$dateminusoneday-%d")


 list=$(find /home/asdf | grep -P '\d{4}\-\d{2}\-\d{2}' -o)
 listArray=($list)
         for i in "${listArray[@]}"
         do
         echo $i  
         if [[  $i < $date ]]; then
         echo "delete file"
         else
         echo "no need delete this file"  fi  done

我需要删除日期中最小的文件。但我不懂

什么是最优化的方式?

谢谢大家。

linux bash scripting
1个回答
0
投票

从您的代码中我发现您正在尝试删除超过一个月的文件。如果我没有弄错你可以接受(1个月)==(30天)你可以使用这样的单行:

find "$path" -mtime +30 -delete

如果您想要1个月(不是30天),您可以使用:

#!/bin/bash

path="/home/asdf"

number_of_days=$((($(date '+%s')-$(date -d '1 month ago' '+%s'))/86400))
find "$path" -mtime +$number_of_days -delete
© www.soinside.com 2019 - 2024. All rights reserved.