我正在尝试删除超过 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
一旦删除了文件,就无法再获取stat
其atime
信息mtime
。
同样,-printf
GNU 中的操作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
来模仿它。