![xargs를 사용하여 대화식으로 디렉토리 삭제](https://linux55.com/image/113870/xargs%EB%A5%BC%20%EC%82%AC%EC%9A%A9%ED%95%98%EC%97%AC%20%EB%8C%80%ED%99%94%EC%8B%9D%EC%9C%BC%EB%A1%9C%20%EB%94%94%EB%A0%89%ED%86%A0%EB%A6%AC%20%EC%82%AD%EC%A0%9C.png)
기가바이트의 공간을 사용하여 모든 디렉터리를 찾습니다. xargs에서 디렉토리 이름을 추출한 다음 xargs를 다시 제거하여 제거하십시오.
du -d2 -h ~/Downloads/ | grep -E '[0-9]G' | xargs -I{} sh -c "echo {} | cut -d' ' -f2" | xargs rm -ri
디렉터리를 대화형으로 삭제하고 싶지만 bash에서 옵션을 입력할 기회가 없습니다.
답변1
rm -ri
마지막 파이프 명령을 사용하여 대화식으로 질문에 답할 수 없습니다 xargs
. 설명여기.
대신에 큰 디렉터리 목록을 인수로 전달할 수 있습니다 rm -ri
.
rm -ri $(du -d2 -h ~/Downloads/* | grep -E '[0-9]G' | xargs -I{} sh -c "echo {} | cut -d' ' -f2")
이것을 다음 xargs cut
으로 바꿀 수 있습니다 awk
.
rm -ri $(du -d2 -h ~/Downloads/* | grep -E '[0-9]G' | awk '{print $2}')
또는 더 짧게:
rm -ri $(du -d2 -h ~/Downloads/* | awk '$1 ~ /G$/ {print $2}')
또한 파일 이름에 공백이 있으면 위 명령이 제대로 작동하지 않습니다.
답변2
xargs를 사용하여 디렉터리를 대화형으로 삭제하는 방법이 있는 것 같습니다. 매뉴얼 페이지를 읽은 후 스스로 해결책을 찾았습니다.
-p 옵션을 -n 1 옵션과 함께 사용하면 이 문제가 해결됩니다.
du -d2 -h ~/Downloads/* | grep -E '[0-9]G' | xargs -I{} sh -c "echo {} | cut -d' ' -f2" | xargs -p -n1 rm -r