我有这些文件夹,它们按日期 YYYY-MM 排序
2020-01
2020-02
2020-03
...
2022-07
2022-08
2022-09
我想删除所有超过一年的文件夹。
这是我的代码:
#!/bin/bash
LOG_FILES=(
"/tmp/test/*"
)
NOW=$( date +%s )
LAST_YEAR=$(date +“%Y-%m” -d "365 days ago")
for folder in ${LOG_FILES[@]}; do
if [ -d "$folder" ]; then
if [ $folder -gt $LAST_YEAR ]; then
echo $( date ) $folder - DELETED
else
echo $( date ) $folder - SAVED
fi
fi
done
代码出错了
This line here:
if [ $folder -gt $LAST_YEAR ]; then
Error Message:
integer expression expected
有人知道如何删除超过一年的文件夹吗?谢谢
答案1
由于您的文件夹包含减号字符,请勿使用算术运算符 (-gt、-lt...) 进行比较。请使用字符串运算符 (>、<...)。
如果您确实想使用算术测试,并且日期格式为 YMD,而不是 DMY,则必须在比较期间删除减号字符。替换$folder
为${folder//-/}
并用作%Y%m
您的上一个日期格式。