• ベストアンサー

findコマンド

findコマンドを用いて”昨日以降に変更・更新のあったファイル”を検索するにはどうしたらよいでしょうか? ご教授ねがいます。 また、-ctime、-atimeを用いたときの日付の±はどういう意味になるのでしょうか? 上記質問とあわせて教えていただければ幸いです。

質問者が選んだベストアンサー

  • ベストアンサー
  • a-kuma
  • ベストアンサー率50% (1122/2211)
回答No.2

> findコマンドを用いて”昨日以降に変更・更新のあったファイル”を検索するにはどうしたらよいでしょうか? -mtime などは、24時間単位なので、日付をベースにした検索が出来ませんね。 そういう場合には、-newer を使います。 例えば、昨日(1/24)以降、つまり 2002-1-24 0:00 よりも後に触ったファイルを探すときには、まず、 touch コマンドで 2002-1-23 23:59 のファイルを作っておいて、それよりも新しいファイルを 探します。 % touch -t 01232359 KEY % find DIR -newer KEY -print という感じ。touch のオプション指定は、幾つか方言があるのでマニュアルを見てください。

その他の回答 (1)

  • mars1943
  • ベストアンサー率72% (13/18)
回答No.1

まず、±についてですが、 atim,ctimeとも n*24時間前にアクセス、ステータス変更が行われた時に真が返ります。 +nの場合、nより大きい範囲となり、 +1の場合、一日以上前ということになります。 -nの場合、nより小さい範囲となり、 -1の場合、一日以内ということになります。 で、昨日以降に変更・更新があったファイルという指定の場合、最後にファイルが修正された時間を対象とする、mtimeというオプションが使えるかと思います。 なので、 find DIRNAME -mtime -1 -print と入力すれば、現在より24時間以内に変更されたファイル名が取得できます。

関連するQ&A

  • findについて

    findの検索条件で -ctime -mtime の違いが分かりません。 参考書を見ると ステータスが変更されたファイル:-ctime 変更されたファイル:-mtime と書いてありました。 参考となるサイト及び 知っていることがありましたら返答をお願い致します。

  • unixのfindコマンドについて

    findコマンドでファイルを日付検索をする場合、一日前と検索してもタイムスタンプから24時間単位になってしまいます。単純に日にちが違うだけで検索するにはどうしたらいいでしょうか? 例ファイルpm11:00 を翌日am2:00にfindコマンドで検索したとき3時間しかたってなくても1日前の条件で検索できるでしょうか?

  • touchコマンドを使わずatimeを更新するコマンド

    touchコマンドを使わずatimeを更新するコマンド ファイルのatimeが変わることについて検証したいと思っています。 ただ、touchコマンドでは直接的すぎるので、他のコマンドで変更したいと思います。 (mtimeとctimeは変更したくありません。) どなたが方法をご存知ないでしょうか?

  • findコマンドについて

    unix コマンドについて質問です。 ファイル1の中に"A=1" ," B=2", "C=3"という文字列が入っているとします。 ファイル2の中に"D=1" , "E=2", "F=3"という文字列が入っているとします。 そのことを自分は知りません。 Aという文字が入っているファイルを探す為、 以下のfindコマンドを打ち、ファイル1のlsの結果が表示されました。 find ./ -type f -exec grep 'A' {} \; -ls その後、出力されたファイル1の中からBとCでgrepしてB=2", "C=3"を表示したいと思います。 上のコマンドと併せて一度でできるコマンドを教えていただけないでしょうか? 宜しくお願いします。

  • findコマンドの-nameについて

    独習Linux第2版で勉強しています。 findコマンドのnameオプションについて質問があります。 テキストでは下記のようなコマンド例が載っています。 find Reports/ -type f -name '*\.bak' -exec rm {} \; nameオプションでワイルドカードを使いたいので パターン部分をシングルクォートで囲っていることは理解できるのですが 「.bak」のドット前にバックスラッシュがついている意味がわかりません。 ネットでfindコマンド例を探してみると、 find Reports/ -type f -name '*.bak' -exec rm {} \; という感じでバックスラッシュなしで説明されています。 実行結果に変わりはないようですが、意味が理解できず困っています。 教えてください。

  • findコマンドで複数条件を設定する方法

    findコマンドを使用して、最終更新日から10日以上経過しているかつ、拡張子が.gz 以外のファイルを圧縮する方法を教えていただきたいです。 それぞれ1つの条件を満たすコマンドはわかるのですが、2つの条件を満たすコマンドをどの様に作成すればよいかわかりません。 最終更新日から10日以上経過したファイルを圧縮 find . -mtime +10 -exec gzip {} ¥; 拡張子が.gz意外のファイルを圧縮 find . -name "*.gz" -prune -o -type f -print -exec gzip {} ¥; よろしくお願いします。

  • unixのfindコマンド

    unixのfindコマンドで、ある複数のディレクトリから指定のファイル名だけを 検索し、その結果をgrepしたいのですが、 例えば 01_dir 02_dir : 11_di : 21_dir : と言うディレクトリがあります。 そこから、「0」で始まっているディレクトリの中なら拡張子が*.txtを 検索し、その検索したファイルに対して、grepを実行したいのですが、 上手くいきません。 もちろん、各ディレクトリには、「.txt」以外のファイルもありますし、 ファイル名にも条件を付与したいです。 以下の様に、 find . -name "0*_dir" -type d -print | xargs ls -l *.txt | grep "検索文字" find . -name "0*_dir" -type d -print | xargs ls *.txt | grep "検索文字" find . -name "0*_dir" -type d -print | xargs -i ls -l '{} /*.txt' | grep "検索文字" find . -name "0*_dir" -type d -print | xargs -i ls {} "検索文字" とやってみたのですがだめでした。 find ./ -type d \( -name '1_*dir' -o -name '2*_dir' -o -name '3*_dir' \) -prune -o -type f -print と「-prune」で除外するディレクトリを指定すればできなくはないですが、 すべてのディレクトリ書くのはいい方法ではないです。 よい方法をお願いします。 OSは、Solaris 11.3です。

  • ACCESSのFindコマンドが遅い

    ACCESS2000でORACLEにリンクテーブルをはり、更新するプログラムを作成しています。 そこでADOでFINDコマンドを使用しているのですが、かなり遅く困っています。 どのようにすれば、早くロック付きの更新ができますでしょうか? Set cn = Application.CurrentProject.Connection Set rs = New ADODB.Recordset cn.BeginTrans rs.Open "テーブル名", cn, addopenkeyset, adLockOptimistic rs.MoveFirst strKey = "ankKey = 'aaa'" rs.Find strKey rs.ankA = "あ" rs.Update cn2.CommitTrans キィを変えてLOOPさせ更新させていると 複数ステップのOLE DBの操作でエラーが発生しました。各OLE DBの状態の値を確認してください。作業は終了しませんでした。 のエラーになります。 1行1行みてみると異常にFINDが遅いものがあり、これが原因でないかと思うのですが、 どのようにロック付きの更新を変更すればいいのかがわかりません。 どのように変更すればいいのでしょうか?

  • 作成日時でのファイル検索

    この日付に作成されたファイルの検索を行いたいのですが、どのようなコマンドを使用すれば良いのでしょうか? findコマンドで可能なのでしょうか? 調べても分からなかったので、お教えいただければ幸いです。

  • DOS findコマンドのバッチでストールする

    DOSコマンドプロンプトで.batファイルを作成。 内容は find "2007:01" access_log_2007_04_11.txt >log2007041101.csv このバッチファイルを、検索するaccess_log_2007_04_11.txt と同じフォルダー上において、ダブルクリックで起動すると。 コマンドプロンプトが開くのだが、以前実行した、 find "2007:00" access_log_2007_04_05.txt >log2007040500.csv が、延々と実行され。 コマンドプロンプトを閉じても log2007040500.csv を、消しても消しても、作成される。 システムを落とすしかなくなる。のです。 4月の頭では正しく動作していたんですが???