web-dev-qa-db-ja.com

時間Xから時間Yまでのファイルを一覧表示します

'x'から 'y'の間に作成されたすべてのファイルを一覧表示するにはどうすればよいですか? 「2014年12月29日18:00」から「2014年12月30日18:00」の間に作成されたファイルを一覧表示したい。 lsまたはstatを使用していますか?

1
Vish

ほとんどのシステムはファイルの作成日を追跡しません

たとえば、GNU/BSDが検出し、検出する場合、たとえば [〜#〜] osx [〜#〜] の場合、その-newerBt述語を使用して、ファイルの作成を比較できます(“ birth”)特定の時間の時間。

find -newerBt "29-dec-2014 18:00" ! -newerBt "30-dec-2014 18:00"

これはサブディレクトリを再帰的にトラバースします。現在のディレクトリにあるファイルのみが必要な場合は、これを作成します

find -mindepth 1 -maxdepth 1 -newerBt "29-dec-2014 18:00" ! -newerBt "30-dec-2014 18:00"

システムが作成時間を追跡しない場合は、代わりに変更時間を使用できます。 -newerBt-newermtに置き換えます。

lsstatも、ファイルを時間でフィルタリングする方法を提供していません。彼らができることはファイルのタイムスタンプをリストすることだけであり、時間範囲の出力をフィルタリングすることは簡単ではありません。 findはこの仕事に適したツールです。

POSIX find は、ファイルのタイムスタンプを別のファイルのタイムスタンプとのみ比較できるため、時間間隔でファイルをフィルタリングする移植可能な方法は、境界ファイルを作成することです。フィルタリングできるのは変更時刻のみで、POSIXは作成時刻を定義していません。

touch -t 201412291800 /tmp/start
touch -t 201412301800 /tmp/stop
find . -newer /tmp/start ! -newer /tmp/stop

またはあなたが再発したくない場合

find . ! -name . -Prune -newer /tmp/start ! -newer /tmp/stop