sudo를 사용하여 디렉토리 내용을 삭제하는 방법

sudo를 사용하여 디렉토리 내용을 삭제하는 방법

내 계정이 액세스할 수 없는 디렉터리(애플리케이션에서 사용하고 애플리케이션을 실행하는 계정이 소유한 캐시 디렉터리)를 비워야 할 정당한 필요성이 있습니다. 내 계정에는 전체 sudo권한이 있지만(제 생각에는) 그렇지 않습니다. 해당 디렉터리의 내용을 삭제하는 방법을 모르겠습니다. 내 계정은 cd디렉터리에 들어갈 수 없으며 상위 디렉터리에만 들어갈 수 있습니다.

sudo rm directory/*

응답하다

cannot remove `directory/*': no such file or directory

간단한 답이 있어야 할 질문인 것 같은데 찾을 수 없습니다.

편집하다:문제의 디렉터리는 확실히 비어 있지 않습니다.

sudo ls directory/

1000개가 넘는 파일 이름이 반환되었습니다.

답변1

쉘이 *파일 목록으로 확장하려고 하기 때문에 문제가 발생하지만 디렉토리를 읽을 수 있는 권한이 없기 때문에 확장할 수 없습니다.

나는 두 가지를 생각해 볼 수 있습니다.

sudo bash -c "rm directory/*"

이 경우 *는 사용자가 확장하는 것이 아니라 디렉터리를 읽을 수 있는 루트에 의해 확장됩니다.

또는

sudo find directory -type f -exec rm {} \;

위의 명령은 디렉터리가 아닌 파일만 삭제하지만(그렇지 않으면 directory내용과 함께 삭제됩니다) 오류가 발생할 가능성이 적습니다.

편집: 첫 번째 옵션에서는 실수로 디렉토리/* 대신에 디렉토리.*를 썼습니다.

답변2

어느작업을 수행할 때 sudo rm명시적 경로를 사용하지 않는 경우 수행 중인 작업에 대해 신중하게 생각해야 합니다.

sudo rm /explicit/path/to/directory/*작동해야합니다. ;에 파일이 없으면 directory여전히 오류가 발생합니다. 당신은 그것을 사용할 수 있습니다 rm -f(아니요 rm -fr너가 아니라면전적으로무엇을 하고 있는지 결정하세요).

관련 정보