一致するTODOを含み、1週間未満のファイルを見つけます。

一致するTODOを含み、1週間未満のファイルを見つけます。

私の失敗した提案

find ./ -newerct '1 week ago' -print | grep TODO

出力が必要ですが、出力はありません。

ファイルは次のテキストファイルです。

Lorem
% TODO check this out
Lorem ipsun

TODOに一致する1週間未満のファイルを見つける方法は? 出力はTODOの次の行でなければなりません。 Perlソリューションは私も練習していて人気があります。

ベストアンサー1

これを変更してください:

find ./ -newerct '1 week ago' -print | grep TODO

これに関して:

find ./ -newerct '1 week ago' -exec grep TODO {} +

またはこれ:

find ./ -newerct '1 week ago' -print | xargs grep TODO

説明する

grep出力findを検索するファイルのリストとして解釈するのではなく、入力として解釈します。つまり、grep一致しようとします。TODO名前ファイルの代わりにコンテンツ

grep(1)マニュアルページから:

grepは名前付き入力ファイルを検索します(ファイル名が指定されていない場合、または単一のハイフンマイナス記号(-)がファイル名として指定されている場合は、標準入力が検索されます)。

次の行を一致させるにはTODO:

find ./ -newerct '1 week ago' -exec grep -A1 TODO {} + | grep -v TODO

これはGNUがあると仮定しますgrep

おすすめ記事