특정 상위 디렉터리 내의 특정 디렉터리를 삭제하는 데 문제가 있습니다.

특정 상위 디렉터리 내의 특정 디렉터리를 삭제하는 데 문제가 있습니다.

저는 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 '{}' \+

관련 정보