나는 bash 쉘을 사용하고 있습니다. 특정 디렉토리의 모든 JAR 파일을 삭제하는 명령이 있습니다
find ~/.jenkins/jobs/subco/ -name '*.jar' -print0 | xargs -0 -r rm
그러나 "~/.jenkins/jobs/subco/myapp"에 있는 JAR 파일을 제외한 모든 JAR 파일을 삭제하도록 위의 내용을 수정하고 싶습니다. JAR 파일이 해당 특정 디렉터리에서 삭제되는 것을 제외하고 다른 모든 디렉터리에서도 삭제되도록 위 명령을 어떻게 수정할 수 있습니까?
답변1
-prune
옵션을 사용하여 디렉터리를 건너뛰세요.
find ~/.jenkins/jobs/subco -path ~/.jenkins/jobs/subco/myapp -prune -o -name '*.jar' -exec rm -r {} +
답변2
노력하다:
(
cd ~/.jenkins/jobs/subco
find . -path ./myapp -prune -o -type f -name '*.jar' -print0 | ...
)
-type f
JAR 파일만 일치시키려는 경우 제한에 추가하세요 . 그리고, 당신은 그것을 사용했고 , 그것을 지원할 -print0
가능성이 있으므로 다음을 사용할 수 있습니다:find
-delete
(
cd ~/.jenkins/jobs/subco
find . -path ./myapp -prune -o -type f -name '*.jar' -delete
)
POSIX적으로:
(
cd ~/.jenkins/jobs/subco
find . -path ./myapp -prune -o -type f -name '*.jar' -exec rm -f {} +
)
GNU find를 사용하면 -execdir
사용을 피할 수 있습니다-exec
경쟁 조건, 일부도 참조하세요GNU Find 매뉴얼의 보안 고려 사항.
-delete
가능하면 항상 사용해야 합니다 .