私の失敗した提案
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
。