[linux] 특정 이름의 폴더를 제거하는 방법

Linux에서 폴더 계층 구조에 중첩 된 특정 이름의 폴더를 어떻게 제거합니까?

다음 경로는 폴더 아래에 있으며라는 모든 폴더를 제거하고 싶습니다 a.

1/2/3/a
1/2/3/b
10/20/30/a
10/20/30/b
100/200/300/a
100/200/300/b

부모 폴더에서 어떤 Linux 명령을 사용해야합니까?



답변

대상 디렉토리가 비어 있으면 find를 사용하고 디렉토리 만 필터링하고 이름을 기준으로 필터링 한 다음 rmdir을 실행하십시오.

find . -type d -name a -exec rmdir {} \;

당신이 반복적으로 그 내용을 삭제하려면, 교체 -exec rmdir {} \;에 의해 -delete또는 -prune -exec rm -rf {} \;. 다른 답변에는 이러한 버전에 대한 세부 정보가 포함됩니다.


답변

다음과 같이 이름 “a”에 find를 사용하고 원하는대로 rm을 실행하여 rm을 실행하십시오.

find . -name a -exec rm -rf {} \;

ls를 사용하여 먼저 나열하여 테스트하십시오.

find . -name a -exec ls {} \;

일반 파일이 아닌 디렉토리 만 제거하려면 “-type d”arg를 사용하십시오 (주석에서 제안한대로).

find . -name a -type d -exec rm -rf {} \;

“{}”은 발견 된 각 파일 “a”에 대한 대체입니다. exec 명령은 대체에 의해 각각에 대해 실행됩니다.


답변

이것은 또한 작동합니다- “a”라는 폴더와 그 내용을 모두 제거합니다 :

rm -rf `find -type d -name a`


답변

이름이있는 모든 디렉토리를 삭제하려면 foo다음을 실행하십시오.

find -type d -name foo -a -prune -exec rm -rf {} \;

다른 답변에는 중요한 -prune옵션 이 누락되었습니다 . 이 없으면 -pruneGNU find는 이름이 일치하는 디렉토리를 삭제 한 후 재귀하여 일치하는 디렉토리를 더 찾습니다. 이 -prune옵션은 조건과 일치하는 디렉토리로 재귀하지 않도록 지시합니다.


답변

node_modules사용하여 진행중인 작업의 백업을 수행하기 전에 폴더 를 삭제하려고했습니다 rsync. 주요 요구 사항은 node_modules폴더를 중첩 할 수 있어야하므로 -prune옵션 이 필요하다는 것입니다.

먼저 삭제할 폴더를 시각적으로 확인하기 위해 이것을 실행했습니다.

find -type d -name node_modules -prune

그런 다음 이것을 실행하여 모두 삭제했습니다.

find -type d -name node_modules -prune -exec rm -rf {} \;

피스 타치 덕분에


답변

find ./ -name "FOLDERNAME" | xargs rm -Rf

트릭을해야합니다. 실수로 펌프 경우, 경고 .또는 /으로 xargs rm -Rf전체 컴퓨터하는 운영체제 재설치를 요구, 그것을 다시 얻을 옵션없이 삭제됩니다.


답변

나는 100 개 이상의 파일을 가지고 있었다

log-12
log-123
log-34
....

위의 답변은 저에게 효과가 없었습니다.

그러나 다음 명령이 도움이되었습니다.

find . -name "log-*" -exec rm  -rf {} \;

내가 준 -type으로 .는 시작 두 파일과 폴더를 삭제 있도록log-

rm -rf삭제 폴더는 재귀 심지어는 파일이 있습니다.

폴더 만 원한다면

find -type d -name "log-*" -exec rm  -rf {} \;

파일 만

find -type f -name "log-*" -exec rm  -rf {} \;