删除特定父目录中的特定目录时遇到问题

删除特定父目录中的特定目录时遇到问题

我正在使用 Amazon Linux,bash shell。我正在尝试编写一条语句来删除特定主目录中名为“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则应该使用该-0标志,xargs以便它可以正确读取名称。

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

现代find(通过 POSIX,因此 OpenBSD 上的非 GNU确实支持这一点)可以完成必要的工作,而无需通过表单find进行调用。xargs-exec command {} +

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

相关内容