フォルダにナノ秒タイムスタンプがあるファイルがあります。
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)
(symlinkの場合は、シンボリックリンクが解決された後にファイルのmtimeが考慮されます。シンボリックリンク自体のmtimeを考慮するには、inを削除して両方の呼び出しに対応する-
オプション-om
を追加します。)-L
zstat