2020年以降にサーバーで変更されたすべてのファイルを一覧表示する方法は?

2020年以降にサーバーで変更されたすべてのファイルを一覧表示する方法は?

/から始めて、変更されたすべてのファイルを繰り返しリストする必要があります。 2020年の書類のみ。 findで複数のコマンドを試しましたが、うまくいきません。

ベストアンサー1

GNUの実装find(通常はLinuxをカーネルとして使用する非組み込みオペレーティングシステムに見られる)を使用すると(実際にはBSDユーザー貢献パッチとして最初に導入されたため、構文はGNUに限定されませんが)、次のことができます。

find / -type f -newermt 2020-01-01 ! -newermt 2021-01-01

これには、2021-01-01 00:00:00.000000000に最後に変更されたファイルが含まれ、2020-01-01 00:00:00.000000000に最後に変更されたファイルは含まれません。現実的に正確なナノ秒精度のファイルを作成することはほとんど不可能ですが、これはナノ秒精度で時間を節約しないアーカイブから抽出されたファイル、または長い間タイムスタンプが変調されたファイルの場合です。それでも起こることがありますtouch -d 2020-01-01。はい。

GNUのもう一つのアプローチfindは次のとおりです。

find / -type f -printf '%TY%p\0' | LC_ALL=C sed -zn 's/^2020//p' | tr '\0' '\n'

つまり、findファイルが最後に変更された年が印刷され、その後にNULで区切られたレコードへのパスが印刷され、これはsed2020年から始まるレコードをフィルタリングするために使用されます。

findサポートされていない実装では、-newermt標準述語を使用して参照ファイルを作成し、標準述語と比較できますtouch-newer

mkfifo first last
touch -d 2020-01-01 first
touch -d 2021-01-01 last
find / -type f -newer first ! newer last

(ここでは通常のファイルではなくfifoファイルで作成されるため、選択されません-type f。)

おすすめ記事