Linux 상자에 10000 개 이상의 파일을 삭제해야하는 디렉토리가 있습니다. 달리는…
sudo rm -rf /var/tmp/*
오류 메시지를 제공합니다 …
sudo: unable to execute /bin/rm: Argument list too long
이것에 대한 해결책은 실행하는 것입니다
sudo find /var/tmp | xargs sudo rm
파일 이름에 공백이없는 파일에만 작동합니다. 그러나 일부 파일에는 공백이 포함 된 이름이 있으며 삭제되지 않습니다. 예를 들어, 파일 이름이 ‘Name.dat에 공백이있는 파일’인 경우 명령을 실행하면 다음과 같은 오류가 발생합니다 ….
rm: cannot remove `/var/tmp/A': No such file or directory
rm: cannot remove `File': No such file or directory
rm: cannot remove `With': No such file or directory
rm: cannot remove `Spaces': No such file or directory
rm: cannot remove `in': No such file or directory
rm: cannot remove `the': No such file or directory
rm: cannot remove `Name.dat': No such file or directory
파일 이름을 손상시키지 않고 전체 파일 경로를 xargs sudo rm에 전달하는 방법
답변
에게 find
및 xargs
다른 파일 구분 기호를 사용할 수 :
find /var/tmp -print0 | sudo xargs -0 rm
또는 직접 find
실행하도록 지시하십시오 rm
.
sudo find /var/tmp -exec rm {} +
또는 find
파일을 삭제하도록 지시하십시오.
sudo find /var/tmp -delete
참고 : 디렉토리 자체를 -mindepth 1
삭제하지 않으려면 유용 할 수 있습니다 /var/tmp
.
… 또는 실제로을 삭제하십시오 *
. 처음에 재귀 모드를 사용하려는 경우 필요하지 않습니다.
sudo rm -rf /var/tmp
답변
디렉토리 삭제 문제를 피하기 위해 이전 답변에 추가하십시오.
find /var/tmp -type f -exec sudo rm {} +
find /var/tmp -depth -type d -exec sudo rmdir {} +
rmdir -p
-depth를 사용하는 대신 디렉토리의 모든 하위 항목을 제거하는 데 사용할 수도 있습니다.