grep -rlwが7日より古いファイルにのみ適用されますか?

grep -rlwが7日より古いファイルにのみ適用されますか?

現在、このバージョンのgrep -rlwを使用しています。

grep -rlw . -e "string_to_search"

「string_to_search」を含むファイル全体を検索します。

7日を超えていないファイルを見つけるように修正したいと思います。

どうすればいいですか?

grep -rlw . -e "string_to_search" | find -mtime +7|print

こんなのがうまくいくでしょうか?

ベストアンサー1

年齢に応じて転送するファイルを使用または検索する必要がfindあります。zshgrep

  • find:

    find . -mtime -7 -type f -exec grep -lFw string_to_search {} +
    
  • zsh:

    grep -lFw -- string_to_search **/*(D.m-7)
    

これは、ファイルパスにプレフィックスを追加するのをzsh防ぎ、ソートされたリストを提供しますが、これを防ぐためにPOSIX以外の場合(たとえば、GNUや互換性など)が必要であることを意味します。このアプローチは、パラメータ+環境サイズのシステム制限に達する可能性があります。この問題を解決するには、自動読み込み機能を使用してください。./--grepgrep-zshexecve()zargs

findsort、およびのGNU実装を使用すると、プレフィックスを回避してリストを並べ替えることもxargsできます。./

find . -mtime -7 -type f -printf '%P\0' |
  sort -z |
  xargs -r0 grep -lFw -- string_to_search

-mtime -7そして、m-7寿命(mtimeベース)は7より小さく、整数日数に丸められたファイルと一致します(この場合、1日は86400 Unix秒の期間です)。したがって、DSTがその時間間隔内に変更されない限り、これは通常ファイルが最後の週に最後に変更されてから同じ時間(または将来の同じ日)です。

-mtime +7期間は厳密に7より大きいため、8日(8 * 86400秒)以上のファイルに対して機能します。

おすすめ記事