![디렉토리 경로에 공백이 있는 디렉토리 제거](https://linux55.com/image/214586/%EB%94%94%EB%A0%89%ED%86%A0%EB%A6%AC%20%EA%B2%BD%EB%A1%9C%EC%97%90%20%EA%B3%B5%EB%B0%B1%EC%9D%B4%20%EC%9E%88%EB%8A%94%20%EB%94%94%EB%A0%89%ED%86%A0%EB%A6%AC%20%EC%A0%9C%EA%B1%B0.png)
저는 macOS를 사용하고 있습니다. 내 경로에는 다음과 같은 많은 디렉토리가 있습니다.
./FirstName SecondName/A Multi Word Title/Contents/Index/files
Index
모든 디렉토리와 그 내용을 삭제하고 싶습니다 . 나는 \
성공하지 못한 채 공간 탈출을 시도했다 . 필요하다면 두 번 정도 할 의향이 있는데, 파일을 삭제한 다음 디렉터리를 삭제해 보겠습니다.
답변1
정말로 모두 제거하려면 쉘 파일 이름 패턴을 사용할 수 있습니다.
rm -i -v -r ./*/*/Contents/Index
rm
옵션의 의미를 보려면 매뉴얼 페이지를 확인하십시오 .
답변2
Index
현재 디렉토리 또는 그 아래에 호출된 디렉토리를 검색하고 삭제하려면 find
다음과 같이 사용할 수 있습니다.
find . -depth -name Index -type d -exec rm -r {} \;
이는 관심 있는 특정 디렉토리에 대한 깊이 우선 검색을 수행하여 rm -r
각 디렉토리를 차례로 호출합니다. (를 사용하여) 깊이 우선 검색을 수행해야 합니다 -depth
. 그렇지 않으면 아직 방문하지 않은 디렉토리를 삭제하여 find
오류가 발생할 수 있습니다.
디렉터리가 디렉터리의 하위 디렉터리가 되도록 하려면 -path '*/Contents/Index'
대신 test를 사용하세요.-name
Index
Contents
zsh
쉘이나 쉘 옵션이 설정된 bash
쉘을 사용하면 globstar
다음을 사용할 수도 있습니다.
rm -r ./**/Index/
또는
rm -r ./**/Contents/Index/
이는 rm -r
호출되는 디렉토리에 대한 경로 이름 목록과 함께 호출됩니다 Index
(디렉토리 경로의 모든 부분이 숨겨지지 않고 name으로 심볼릭 링크된 디렉토리를 삭제할 수도 있다고 가정 Index
하고 일치하는 경로 이름 목록이 수천 개의 항목이 아니라고 가정). 긴 ). 후행 슬래시는 디렉터리만 영향을 받도록 합니다.
답변3
다른 소스에서 솔루션을 얻었는데 작동합니다.
find . -name directory* -print0 | xargs -0 rm -R