.ft1
私は、特定の単語を含めることも含まない場合もある、同じエンディングを持つ多くの異なるファイルを持っていますspecial
。その単語を含むファイルについて、そのディレクトリに.log
異なるエンディングを持つ別のファイルがあることを確認したいと思います。
私が今まで得たものは次のとおりです。
find . -name "*.ft1" -exec grep -l "special" {} \; -execdir ls *log \;
ls
ただし、実行するたびにエラーが発生します。
ls: cannot access *log: No such file or directory
しかし、私は知るこのディレクトリにそのようなファイルがあります。また、アスタリスクをエスケープして式を作成しようとしましたが、-execdir ls \*log \;
エラーが残っています。
私も見たことがあるこれ同様の質問ですが、現在これが私の問題を解決するのにどのように役立つのかわかりません。
どうすれば正しく動作させることができますか?.log
見つかったファイルと同じ名前のファイルのみを一覧表示するソリューションのボーナスポイント.ft1
。
ベストアンサー1
問題は、globを解釈するためにシェルが必要であることです*.log
。したがって、-execdir
シェルを呼び出す必要があります。次のコードスニペットは、「同じ茎」の要件も解決します。
find . -name "*.ft1" -exec grep -l "special" {} \; \
-execdir bash -c 'x=$1; x=${x%.txt}; ls "$x".log' bash {} \;