디렉토리 지우기

디렉토리 지우기

각 상위 폴더 내에 하위 폴더와 파일이 있는 상위 폴더 목록이 있습니다. 상위 폴더를 비우려면 어떻게 해야 합니까? 즉, 모든 파일과 하위 폴더를 삭제하고 상위 폴더를 비워 두나요?

Parent folder A
       subfolder aa
       file a
Parent folder B
       file b
       file vv
Parent folder C
       subfolder s
       subfolder n 
        file x
.
.
.
.

답변1

GNU 사용 find:

find "Parent folder A" "Parent folder B" ... -mindepth 1 -delete

답변2

또는 rm각 상위 폴더 아래에서 삭제를 시작하도록 지시합니다.

# set dotglob to have * include files beginning with '.'
shopt -s dotglob
rm -r "Parent folder A"/* "Parent folder B"/* ...

답변3

최상위 디렉토리에 파일이 없다고 가정합니다.

for i in *; do (cd "$i"; rm -rf *); done

또는

for i in *; do (cd "$i"; for j in *; do rm -rf "$j"; done); done

*나는 디렉토리가 비어 있으면 삭제를 시도하지 않고 특정 파일 패턴만 포함하도록 쉽게 수정할 수 있기 때문에 후자를 선호합니다 . 더 복잡한 작업에는 find.

답변4

cwd(현재 작업 디렉터리)가 모든 상위 폴더가 있는 위치에 있다고 가정하면 다음을 수행할 수 있습니다.

for i in *; do
    [[ -d "$i" ]] || continue
    rm -rf "$i"/*
done
  • 현재 폴더(예: 상위 폴더)의 모든 디렉터리를 반복합니다.
  • 모든 하위 폴더의 모든 파일 및 폴더 삭제

관련 정보