이 유형의 dir
구조의 경우:
\\rdwlhsdevserver\root\user1\folders\testdat.txt
\\rdwlhsdevserver\root\abhay\testdat.txt
\\rdwlhsdevserver\root\testuser\folders1\folder2\testdat.txt
\\rdwlhsdevserver\root\devadmin\input\testdat.txt
\\rdwlhsdevserver\root\admin\testdata\testdat.txt
상위 폴더와 모든 하위 폴더를 삭제 하는 데 사용할 수 있다는 것을 알고 있지만 rm -rf <<folderPath>>
다음을 제외하고 삭제하고 싶습니다.\\\rdwlhsdevserver\root\Childfolder
를 실행한 후 cmd
출력은 다음과 같아야 합니다.
\\rdwlhsdevserver\root\user1\
\\rdwlhsdevserver\root\abhay\
\\rdwlhsdevserver\root\testuser\
\\rdwlhsdevserver\root\devadmin\
\\rdwlhsdevserver\root\admin\
답변1
rm -rf /path/to/root/*/*
참고: 비슷한 테스트 디렉터리 구조를 만들어 먼저 테스트해 보세요. 귀하의 쉘은 이 구문을 지원하지 않을 수 있습니다(bash 및 zsh에서 테스트했습니다).
답변2
GNU 또는 BSD 사용 find
:
find /path/to/root -mindepth 2 -delete
그리고 zsh
:
rm -rf /path/to/root/*/*(D)
그러나 디렉토리를 가리키는 심볼릭 링크가 있는 경우 /path/to/root
해당 디렉토리에 있는 파일은 그 뒤에 삭제됩니다. 내장된 기능을 활성화하여 해결할 Arg list too big
수 있는 오류가 발생할 수도 있습니다 .rm
zmodload zsh/files
rm -rf /path/to/root/*/.(D)
(내장 버전은 rm
삭제될 수 있습니다 .
.)
심볼릭 링크를 따르지 않으려면 다음을 수행하세요.
zmodload zsh/files
dirs=(/path/to/root/*(D/)) && rm -rf $^dirs/.