grep がフォルダ内に一致するファイルが見つからない場合は、フォルダ全体を削除します。

grep がフォルダ内に一致するファイルが見つからない場合は、フォルダ全体を削除します。

html各フォルダには、ファイルを含む数千のフォルダがあります。 grepがexample.comファイル内の一致するものを見つけられない場合は、フォルダ全体を削除したいと思いますhtml

一致しないファイルを削除する方法を知っています。たとえば、次のようになります。

grep -ZrLIi "example.com" "/dir/htmls/" | xargs -0 -I {} rm -f --

しかし、ファイル自体を削除するわけではありません。ファイルを含むフォルダ全体(他のファイルを含む)を削除するにはどうすればよいですか?

答え1

grepでPOSIX以外のフラグを使用しているので、GNU coreutilsがあるとします。

grep -ZrLIiF "example.com" /dir/htmls | xargs -0 dirname -z | sort -zu | xargs -0 echo rm -rf

出力が正しい場合は、echo古いコンテンツを削除してください。また、正規表現一致ではなく文字一致を実行するオプションrmも追加しました。-F

関連情報