txt で終わるファイルで (tt\d{1,10}) を一致させる必要があります。
私はgrepとack-grepを試しましたが、結果はありませんでした。
ack-grep -G \.txt$ -g "(tt\d{1,10})"
ベストアンサー1
を使用すると、ack-grep
以下を探しているようです。
ack-grep -uhoG '\.txt$' 'tt\d{1,10}'
find
これは "end up with" コマンドとほぼ同じで、次のように最適化できます。
find . -name '*.txt' -exec grep -Eo 'tt[0-9]{1,10}' {} +
grep
txtファイルごとに1つのコマンドを実行したくない場合。
-type f
ディレクトリ、シンボリックリンク、またはデバイスからテキストを検索したくない場合は、aを追加することも検討できます。 (もちろん名前がほとんどないことに同意するが(シンボリックリンクを除く)*.txt
)
また、-o
オプションはgrep
GNUによって異なり、GNU grepには-r
ディレクトリを再帰的に検索するオプションもありますが、以前のバージョンのGNU grepはディレクトリへのシンボリックリンクでリンクされているため、最新find
バージョンがない場合は注意してくださいgrep
。