特定の親ディレクトリ内の特定のディレクトリを削除するのに問題があります。

特定の親ディレクトリ内の特定のディレクトリを削除するのに問題があります。

私はAmazon Linux、bashシェルを使用しています。特定のホームディレクトリから "target"という名前のすべてのサブディレクトリを削除するステートメントを作成しようとしています。ディレクトリが存在しなくてもエラーが発生しないような内容を作成したいと思います。以下を試しましたが、エラーが発生します。

[jboss@mydevbox ~]$ find ~/.jenkins/jobs/subco/workspace/myproject/ -name 'target' -print0 | xargs rm -rf
xargs: Warning: a NUL character occurred in the input.  It cannot be passed through in the argument list.  Did you mean to use the --null option?

上記の内容をどのようにすればもっと使いやすいでしょうか?

答え1

を使用している場合は、このフラグを使用して名前を正しく読み取る必要が-print0あります。-0xargs

find ~/.jenkins/jobs/subco/workspace/myproject/ -name 'target' -print0 | xargs -0 rm -rf

または、GNUがある場合はfindそのフラグを使用できますが、-deleteディレクトリが空でない限り機能しません。

find ~/.jenkins/jobs/subco/workspace/myproject/ -name 'target' -delete

-execまたはfindと一緒に使用することもできます。

find ~/.jenkins/jobs/subco/workspace/myproject/ -name 'target' -exec rm -rf {} +

答え2

Modern find(POSIXでは、OpenBSDのGNUではない場合はこれをサポートします)は、フォームを介して呼び出すことfindなく必要な操作を実行できます。xargs-exec command {} +

find ... -exec rm -rf '{}' \+

関連情報