sh コマンドで find を使用することはできません。 - 追加クエリ

sh コマンドで find を使用することはできません。 - 追加クエリ

以前に公開されたクエリに続いて shでfindを使用する - コマンドは機能しません。

find . -type f -name '*FW*' -exec grep -iEq 'chmod.*archive|archive.*chmod' {} \; -ls

"archive"または"chmod"テキストが複数行にある場合、このcmdはファイルを見つけることができません。ただし、「chmod」と「archive」のテキストが同じ行にある場合は、ファイルを調べることができます。

したがって、このコマンドを試しましたが、必要なo / pを提供しません。

1> find . -type f -name '*FW*' -exec grep -iEq 'chmod.*' {} \; -ls -exec grep -iEq '.*archive.*' {} +

このコマンドが必要なo / pを提供しないのはなぜですか?

このコマンドを使用して予期した結果を得ましたが、「find:'pcregrep'がシグナル11によって終了しました。」というエラーにより断続的に失敗しました。

2> find . -type f -name '*FW*' -exec pcregrep -qM 'chmod.*(\n|.)*archive.*' {} \; -ls

エラーで失敗するのはなぜですか?

答え1

質問の2番目のコマンドは、使用するテスト順序がfind重要であるため、正しい出力を提供しません。このコマンドは、他のコマンドが実行されたchmodため、その文字列を含むファイルの結果のみを出力します。grep後ろに -ls(そして出力を生成しません)。

chmod文字列とarchive

find . -type f -name '*FW*' \
    -exec grep -Fiq chmod {} \; \
    -exec grep -Fiq archive {} \; -ls

grep -Fiq chmod名前にその内容を含むすべてのファイルを呼び出し、次に一致するものが見つかった最初のファイルを呼び出します。 2番目のファイルでも何かが見つかると、そのファイルが適用されます。FWgrep -Fiq archivegrepgrep-ls

関連情報