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
옵션 이 누락되었습니다 . 이 없으면 -prune
GNU 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 {} \;