응용 프로그램 오류로 인해 생성된 디렉터리가 있습니다. 이 디렉터리의 구조에는 다음과 유사하게 한 디렉터리씩 2000개 이상의 디렉터리가 포함됩니다.
디렉토리 aaaa
내부 bob
내부 ccc
내부 ddd
내부 eee
등 이러한 디렉토리의 깊이는 1000레벨이며, 그 중 대부분은 이름에 URL로 인코딩된 공백이 있습니다(공백은 is %20
, >
등입니다 %3E
).
.을 사용하여 디렉터리를 삭제하려고 하면 디렉터리를 삭제하는 데 필요한 문자열이 UNIX에서 너무 긴 것 rm -fr
같습니다 . directory is not empty
이 디렉토리를 삭제하는 방법이 있나요 rm
?
저는 Mac OS X Mountain Lion을 사용하고 있습니다.
답변1
매우 깊은 구조를 사용하는 경우 rm -rf stuff_to_delete
rm이 너무 많은 디렉토리를 처리하지 못할 수도 있습니다.
다음 방법으로 이 문제를 해결할 수 있습니다.
find /starting/path/to/delete/from -type d -delete
또는
find -type d /starting/path/to/delete/from -exec rm -f {} \;
첫 번째가 작동해야 합니다. 두 번째 명령은 각 디렉터리에 대해 새 명령(rm)을 시작하지만 이를 통해 rm
force 플래그를 사용할 수 있습니다 . 하지만 그럴 필요는 없을 것 같고 첫 번째 명령이 더 빨라졌으면 좋겠습니다.
어떤 명령을 사용하든 먼저 -print를 사용하여 경로가 올바른지 확인하세요.
답변2
저는 MacOSX 10.8 노트북에서 "sudo rm -fr" 오류를 자주 목격합니다. 최근의 경우 삭제하려는 디렉터리에는 디렉터리 계층 구조에 약 28,000개의 파일이 포함되어 있으며, 그 깊이는 최대 8~10개 수준일 수 있으며 디스크의 총 크기는 약 4GB입니다. 항상 그렇듯이 "sudo rm -fr"을 두 번째로 실행하여 나머지 파일을 삭제하세요.
삭제되지 않은 파일은 항상 디렉토리 트리의 상단 근처에 있는 것처럼 보이기 때문에 문제는 디렉토리 계층 구조의 깊이에 있는 것이 아닌 것 같습니다. "rm"이 이러한 디렉토리를 반복적으로 삭제하기를 원하기 때문에 이것이 총 파일 또는 디렉토리 수와 관련이 있다고 믿기 어렵습니다.