我有这个代码:
#!/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
我需要删除日期中最小的文件。但我不懂
什么是最优化的方式?
谢谢大家。
从您的代码中我发现您正在尝试删除超过一个月的文件。如果我没有弄错你可以接受(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