根据文件名作为日期,删除所有超过30天的文件

我是bash的新手,我的任务是删除所有30天以上的文件,我可以根据文件名来解决这个问题Y_M_D.ext2019_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 format

discriminant=$(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

回到顶部