Linux 하위 폴더를 기반으로 폴더를 삭제하는 방법

Linux 하위 폴더를 기반으로 폴더를 삭제하는 방법

하위 폴더 이름을 기준으로 Linux에서 일련의 폴더를 삭제해야 합니다.

/tmp/23245/Default
/tmp/34534/Default
/tmp/45435/Default
/tmp/65464/Main

/Default의 하위 폴더가 포함된 /tmp의 모든 폴더를 삭제하고 싶습니다.

이 폴더

/tmp/23245/
/tmp/34534/
/tmp/45435/

다음을 사용하여 파일을 찾을 수 있습니다. find /tmp/*/Default

하지만 그 출력에서 ​​/tmp/Foldername 폴더의 이름을 rm -rf로 파이프하려면 어떻게 해야 합니까?

답변1

find를 사용하여 다음을 시도해 볼 수 있습니다.

find /tmp -mindepth 2 -maxdepth 2 -name "*Default*" -type d -printf "%h\n" | xargs rm -R

/tmp에서 2레벨 아래의 디렉터리를 분석하려면 minlength와 maxlength를 사용하고, 선두 디렉터리만 인쇄하려면 %h를 사용하세요. 출력을 xargs rm -R로 파이프하여 선행 디렉토리를 제거합니다.

답변2

dirnameGNU coreutils에는 다음이 있습니다 .

for i in /tmp/*/Default; do
  rm -R "$(dirname "$i")";
done

find어쩌면 접근 방식도 있을 수 있습니다 . 나는 그것에 대해 익숙하지 않으므로 귀하 및/또는 다른 사람들에게 맡기겠습니다.

편집: 아마도 rm -R "$(dirname /tmp/*/Default)"작동할 수도 있습니다

답변3

rm -d dirname로 시도해 보셨나요 *?

rm -d /tmp/*/Default

이 사이트를 벗어나면:https://linuxize.com/post/rm-command-in-linux/

관련 정보