하위 폴더 이름을 기준으로 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
dirname
GNU 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/