在一个文件夹中,我有带有纳秒时间戳的文件:
FileLastestFile.ext
FileOther0.ext
FileOther1.ext
FileOther2.ext
FileOther3.ext
FileOther4.ext
...
FileOther.ext
我只想保留从该目录 ( FileLastestFile.ext
) 中的最新文件开始 10 秒创建的文件。
我尝试使用该命令find .. -newermt
,但我不知道以哪种方式将FileLastestFile.ext
时间戳指定为原点。
答案1
我认为这显示了如何使用 FileLatestFile.ext 中的时间,从而%x
表示上次访问、%y
表示上次修改并%z
表示上次状态更改。
$ find /folder/ -mindepth 1 -newerct "$(stat --printf=%y /folder/FileLatestFile.ext)" 2>/dev/null
现在的技巧是减去 10 秒。从那。
答案2
和zsh
:
#! /bin/zsh -
zmodload zsh/stat
newest=(*.ext(-om[1]))
zstat -F%s.%N -A mtime_of_newest +mtime -- $newest || exit
(( cutoff = mtime_of_newest - 10 ))
older_than_cutoff() {
local mtime
zstat -F%s.%N -A mtime +mtime -- ${1-$REPLY} && (( mtime < cutoff ))
}
rm -rf -- *.ext(+older_than_cutoff)
(请注意,对于符号链接,考虑的是符号链接解析后文件的 mtime。如果您希望考虑符号链接本身的 mtime,请删除 in-
并将-om
该-L
选项添加到两个zstat
调用中)。