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
フィルターを選択します (+
フィルターの横に が表示されます)。
答え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 での検索に関する高度なヒント、 高度なクエリ構文をプログラムで使用する