xargs를 사용하여 대화식으로 디렉토리 삭제

xargs를 사용하여 대화식으로 디렉토리 삭제

기가바이트의 공간을 사용하여 모든 디렉터리를 찾습니다. 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

관련 정보