파일 이름에 공백이있는 리눅스에서 여러 파일 삭제 -rf /var/tmp/* 오류 메시지를 제공합니다 … sudo:

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에 전달하는 방법



답변

에게 findxargs다른 파일 구분 기호를 사용할 수 :

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를 사용하는 대신 디렉토리의 모든 하위 항목을 제거하는 데 사용할 수도 있습니다.


답변