特定の時間の間に変更されたファイルを見つけるにはどうすればよいでしょうか?

特定の時間の間に変更されたファイルを見つけるにはどうすればよいでしょうか?

Cygwin がインストールされた Windows 7 ボックスがあります。 1 つのルート フォルダー内に、ファイルを含むフォルダーが複数あります。 特定の日付範囲内のタイムスタンプを持つファイルのリストを検索します。

答え1

findオプションを指定してコマンドを使用できます-newerXY

からman find:

-新しいXY参照
現在のファイルのタイムスタンプを参照参照引数は通常、ファイル名(比較にはそのタイムスタンプの 1 つが使用されます)ですが、絶対時間を表す文字列になることもあります。バツそしてはい他の文字のプレースホルダーであり、これらの文字はどの時間に属するかを選択します参照比較に使用されます。

可能な値はバツそしてはい以下の通り:

  • a - 現在のファイルの最終アクセス時刻または参照
  • B - 現在のファイルの誕生時刻または参照
  • c - 現在のファイルの最後のinodeステータス変更時刻または参照
  • m - 現在のファイルの最終変更時刻または参照
  • t -参照タイムスタンプを表す文字列です(バツ

バツ現在のファイルを参照し、はい参照したがって、最初の文字 (現在のファイルの変更日) には 'm' を使用し、2 番目の文字 (文字列として渡されるタイムスタンプ) には 't' を使用します。スクリプトの例:

find . -type f -newermt "2012-05-01" ! -newermt "2012-05-15"

これは、2012 年 5 月 1 日から 15 日の間に変更されたすべてのファイルを検索します。!(論理NOT) 演算子は、それに続く引数の意味を反転します。つまり、 が-newerXY「X は Y より新しい」という意味であれば、 は! -newerXY「X は Y より古い」という意味になります。


Windowsをお使いの場合は、Powershellを使用するという選択肢もあります。Get-ChildItemコマンドレットは指定されたフォルダ内のすべてのファイルを(必要に応じて再帰的に)返し、Where-Objectコマンドレットを使用すると、他のコマンドの出力をフィルタリングできます。サンプル スクリプト (検索するディレクトリが現在のディレクトリであると想定):

Get-ChildItem -Recurse | Where-Object { $_.LastWriteTime -ge "2012-05-01" -and $_.LastWriteTime -le "2012-05-15" -and !$_.PSIsContainer }

これは、2012 年 5 月 1 日から 15 日の間に変更されたすべてのファイルを返します。CreationTimeの代わりにを使用するとLastWriteTime、ファイルの作成時間をチェックできます。!$_.PSIsContainerフィルターはファイルのみを返します (PSIsContainerはフォルダーに対して true であり、感嘆符はここでも論理NOT演算子です)。

答え2

使用できますファーマネージャーFind Fileフィルター付き:ここに画像の説明を入力してください

フィルター ボタンを押して、Insert新しいフィルターを挿入します。ここに画像の説明を入力してください

フィルターに何らかの名前を付け、ファイル マスクを入力し、チェックしDate/Time、値を選択しchange、チェックを外してRelative日付/時刻の範囲を入力します。ここに画像の説明を入力してください

[OK] を押し、 で をFilters menu押してspaceフィルターを選択します (+フィルターの横に が表示されます)。ここに画像の説明を入力してください

Enterキーを押して、次を押しますFind:ここに画像の説明を入力してください

検索結果 (この例では写真 - マスクIMG_*.jpg- 2022 年 6 月の日付範囲):ここに画像の説明を入力してください

答え3

GUI ファイル エクスプローラーを使用してファイルを検索することも可能です。例:

datemodified:2015-02-18 08:00..2015-02-18 13:00
datemodified:>2015-02-18 08:00
datemodified:<2015-02-18 08:00

さらに詳しい情報: Windows での検索に関する高度なヒント高度なクエリ構文をプログラムで使用する

関連情報