{{text}}
すべてのファイルで見つけ、新しいファイルで赤を探したいです。試してみましたが、私には効果がありません
find . -type f -not -name "*.dll" -not -name "*.zip" -exec cat {} \; |
grep "\{.*" | cut -d "{" -f1 | sort | uniq > keys.txt
答え1
私はあなたがこれを探していると思います:
grep -FIrho '{{text}}' . >/tmp/keys.txt
mv -f /tmp/keys.txt .
.dll
または、除外項目とファイルが本当に必要な場合は、.zip
次のようになります。
find . \( -name '*.zip -o -name '*.dll' \) -prune -o -type f -exec grep -Fho '{{text}}' {} + >/tmp/keys.txt
mv -f /tmp/keys.txt .
これkeys.txt
にはゼロ行以上が含まれます{{text}}
。一致する内容の代わりにファイル名を記録してもよろしいですか?それともライン全体が{{text}}
存在しますか?
答え2
grep
シェルとマジックを介して再帰的に呼び出すことに加えて、find
一部のプログラムは困難な作業を実行できます。
たとえば、silversearcher-ag(https://geoff.greer.fm/ag/)または確認(https://beyondgrep.com/)、それは簡単です:
ack '{{text}}'
または
ag '{{text}}'
これらのツールの利点は、基本的にバイナリやディレクトリなどの検索を避け、.git
ループ.svn
呼び出しよりもはるかに高速です。grep
これらのツールは、主要なGNU / Linuxディストリビューションのリポジトリにあります。