脚本用于删除超过 2 天的文件并将文件名记录到包含创建时间和删除时间的文件中

脚本用于删除超过 2 天的文件并将文件名记录到包含创建时间和删除时间的文件中

我正在尝试删除超过 2 天的文件,并将删除的文件名连同创建/修改时间和删除时间一起写入日志文件。

例如:文件名创建时间删除时间

测试1 11-08-2020T08:38:16+05:30 12-08-2020T10:18:42+05:30
测试2 11-08-2020T08:38:16+05:30 12-08-2020T10:18:42+05:30

我有脚本可以删除超过 2 天的文件并将文件名记录到文件中,但不知道如何打印以及创建/修改日期和删除时间。

#!/bin/bash

path="/test"
filename=*.txt
logfile=/tmp/$(date +%d-%m-%Y).log
days=-60

find $path -mmin $days -name "*.wav" -type f -print0 -delete | xargs -0 basename -a >> $logfile

有人能帮助我实现上述输出吗?

答案1

一旦删除了文件,就无法再获取statatime信息mtime

同样,-printfGNU 中的操作find有一个%f用于打印文件基本名称的说明符,因此实际上不需要外部xargs/basename组合。

-printf因此,您可以获取基本名称和修改时间

find "$path" -type f -name "*.wav" -mmin "$days" -printf '%f\t%T+\n'

然后您可以date在之前(或之后)执行命令-delete来获取删除时间:

find "$path" -type f -name "*.wav" -mmin "$days" -printf '%f\t%T+\t' -exec date '+%F+%H:%M:%S.%N' \; # -delete

#仅当您对其执行所需的操作感到满意时,才可删除以继续删除)。

对于其他日期/时间格式选项,请参见相关的手册页 - 我选择了%T+GNU 长格式修改时间find,然后选择了日期格式+%F+%H:%M:%S.%N来模仿它。

相关内容