根据文件名作为日期,删除所有超过30天的文件
我是bash的新手,我的任务是删除所有30天以上的文件,我可以根据文件名来解决这个问题Y_M_D.ext
2019_04_30.txt
。
我知道我可以ls
在包含文件的文件夹中列出所有文件。我知道我可以获取今天的日期,$ date
并可以对其进行配置以匹配文件格式$ date
"+%Y_%m_%d"
我知道我可以使用删除文件rm
。
我如何将所有这些结合到一个bash脚本中,该脚本从今天起删除30天以上的文件?
在伪python代码中,我想它看起来像:
for file in folder: if file.name to date > 30 day from now:
delete file
回答:
我绝不是系统管理员,但您可以考虑以下简单的shell脚本:
# Generate the date in the proper formatdiscriminant=$(date -d "30 days ago" "+%Y_%m_%d")
# Find files based on the filename pattern and test against the date.
find . -type f -maxdepth 1 -name "*_*_*.txt" -printf "%P\n" |
while IFS= read -r FILE; do
if [ "${discriminant}" ">" "${FILE%.*}" ]; then
echo "${FILE}";
fi
done
请注意,专业人员可能会将其视为“外行”解决方案。也许使用可以更好地处理此问题awk
,但不幸的是,我不习惯使用。
以上是 根据文件名作为日期,删除所有超过30天的文件 的全部内容, 来源链接: utcz.com/qa/417742.html