私はこれがトリックを実行すると思います。
find src -type f -regextype egrep -regex '.*(?<!\.d)\.ts'
しかし、何も一致しないようです。
私の考えではそれうまくいきますが、この「egrep」スタイルは、正しくエスケープしない限り、否定的な逆参照をサポートしていないようです。
参考までに、
% find src -type f
src/code-frame.d.ts # <-- I want to filter this out
src/foo.ts
src/index.ts
.d.ts
検索結果からファイルをフィルタリングする別の簡単な方法はありますか?
% find --version
find (GNU findutils) 4.7.0-git
答え1
構文がサポートされていないようですegrep
(あなたの式はPerl互換の正規表現です)。ただし、例では正規表現を使用する必要はなく、複数の-name
テストを実行し、!
必要に応じて否定を適用するだけです。
find src -type f -name '*.ts' ! -name '*.d.ts'
答え2
ファイル名だけをフィルタリングし、不要なファイルのテストを無効にすることで、目的の結果を得ることができます。
find src -type f -name \*.ts ! -name \*.d.ts
答え3
不要な文字列をフィルタリングする簡単な(おそらく効率が悪い)方法です。
find -name "*.ts" | egrep -v "\.d\.ts$"