graphene-80
로 시작하는 모든 디렉토리를 삭제하려면 어떤 명령을 사용해야 합니까 /tmp
?
rm
명령에 옵션으로 무엇을 추가할 수 있나요 ?
답변1
패턴과 일치하는 디렉터리 삭제graphene-80*
바로 아래/tmp
, 사용
rm -rf /tmp/graphene-80*/
여기서 후행은 이름이 패턴과 일치하는 디렉터리(또는 디렉터리에 대한 심볼릭 링크) /
만 삭제되고 파일 등은 삭제되지 않도록 합니다.graphene-80*
아래의 다른 곳에서 일치하는 디렉터리를 찾아 /tmp
삭제하려면(어디에 있든) 다음을 사용하세요.
find /tmp -type d -name 'graphene-80*' -prune -exec rm -rf {} +
디렉토리 삭제 시 디렉토리 이름을 추가로 보려면 -print
앞에 를 삽입하세요 -exec
.
우리가 찾고 있는 이름을 가진 디렉토리에 대한 테스트 -type d
와 테스트 둘 다입니다. -name 'graphene-80*'
검색 경로에서 -prune
발견된 디렉터리를 제거하고(제거된 디렉터리 내부를 살펴보고 싶지 않음) 마지막으로 다음 -exec
을 호출하여 실제 삭제를 수행합니다.rm
댓글의 질문에 대한 답변: "이 디렉터리의 모든 파일을 삭제하려면 어떻게 해야 합니까(디렉터리 자체는 삭제하지 않음)?"
다음 중 하나:
디렉터리를 삭제한 후 다시 만듭니다.
find /tmp -type d -name 'graphene-80*' -prune \ -exec rm -rf {} \; -exec mkdir {} +
또는 두 작업을 일괄적으로 보다 효율적으로 수행할 수 있습니다.
find /tmp -type d -name 'graphene-80*' -prune \ -exec sh -c 'rm -rf "$@"; mkdir "$@"' sh {} +
이 방법의 장점은 명령이 간단하다는 것입니다(아래 명령에 비해).
발견된 디렉토리에서 이름(파일 및 디렉토리)만 삭제하려면 작은 인라인 쉘 스크립트를 사용하십시오.
find /tmp -type d -name 'graphene-80*' -prune -exec bash -O nullglob -O dotglob -c ' for dirpath do rm -rf "$dirpath"/* done' bash {} +
bash
그러면 일괄적으로 발견된 디렉터리 경로 이름이 포함된 작은 인라인 스크립트가 실행됩니다 . 쉘은 쉘 옵션 세트nullglob
로 시작됩니다.dotglob
이nullglob
옵션은 일치하지 않는 쉘 패턴을 다음으로 확장합니다.아무것도 없다확장되지 않은 상태로 두는 대신dotglob
쉘 옵션을 사용하여 숨겨진 이름을 일치시킵니다(*
기본적으로 숨겨진 이름과 일치하지 않음). 스크립트는 지정된 디렉터리 경로를 반복하고 각 디렉터리를 재귀적으로 비웁니다.이것의 장점은 마운트 지점이 되는 디렉토리 경로 찾기를 완벽하게 처리할 수 있다는 것입니다. 단점은 명령이 복잡하고 명령이 수행하는 작업을 설명하기 위해 이 모든 텍스트를 작성해야 한다는 사실입니다(이는 다음 사람이 스크립트 유지 관리를 인계받기 어려울 수 있음을 의미함).
답변2
사용찾다주문하다:
find /tmp -type d -name 'graphene-80*' -delete
사용된 매개변수:
-type
디렉터리만 필터링하고 파일 찾기 방지-name
따옴표 사이에 정의된 패턴과 일치하는 파일 찾기-delete
find 명령 결과 삭제
편집: 클리너는 -delete
이 게시물에 표시된 것과 동일합니다.
템플릿과 일치하는 파일을 찾아서 삭제하세요.
답변3
이름이 일치하는 빈 디렉토리만 삭제하려면 graphene-80*
다음을 수행하십시오.
find /tmp -type d -name "graphene-80*" -exec rmdir {} +
또는
find /tmp -type d -name "graphene-80*" -delete
( rmdir
GNU find에서는 null이 아닌 오류가 발생합니다.)
디렉터리와 해당 콘텐츠를 삭제하려면 다음 안내를 따르세요.
find /tmp -type d -name "graphene-80*" -exec rm -r {} \; -prune
(중첩된 일치 디렉터리가 있으면 오류가 발생할 수 있습니다 -exec rm +
. 없으면 방금 제거한 디렉터리로 드롭다운하려고 시도하므로 오류가 발생할 수 있습니다.)rm
-prune
find
답변4
다음 명령을 사용할 수 있습니다.고쳐 쓰다
find /tmp -type d -name 'graphene-80*' -prune -exec rm -rf {} +