디렉토리의 모든 파일 삭제

디렉토리의 모든 파일 삭제

일부 파일이 포함된 디렉터리와 다른 파일이 포함된 일부 폴더가 있습니다. 폴더나 그 내용을 건드리지 않고 홈 디렉토리에 있는 파일을 삭제하려고 합니다.

나는 이것을 사용하고 있습니다

rm /media/d/data/*

잘 작동하고 파일만 삭제하지만 터미널에 다음 메시지가 표시되는 이유를 알고 싶습니다.

rm: cannot remove /media/d/data/dd1: Is a directory

기본 폴더 아래에 있는 모든 폴더에는 동일한 메시지가 표시됩니다. 누구든지 이것을 설명할 수 있나요? 터미널에 이 메시지가 표시되지 않게 하는 방법이 있나요?

답변1

기본적으로 rm디렉터리는 삭제되지 않습니다. 디렉토리를 삭제하려면 를 사용하세요 rm -rf. 메시지를 숨기려면 을 사용하세요 rm <dir> 2>/dev/null. 다른 모든 오류 메시지도 표시되지 않습니다.

답변2

이*는 두 개를 선택합니다문서그리고목차. 파일을 삭제하려면 이것을 시도하십시오

find /media/d/data/ -maxdepth 1 -type f -delete

답변3

POSIX적으로:

find ! -name . -prune -type f -exec rm -f {} +

답변4

rm지시한 파일을 삭제하세요. *모든 파일(디렉토리 포함)로 확장되므로 rm디렉토리를 삭제하라는 메시지가 표시되지만 삭제되지는 않습니다.

대부분의 쉘은 와일드카드 패턴에서 디렉토리를 제외할 수 없습니다. 와일드카드 패턴은 유형이 아닌 이름으로만 파일을 일치시킵니다. 당신은 할 수find대신 사용.

Zsh는글로벌 예선유형, 날짜 등을 기준으로 파일을 일치시킬 수 있습니다.zsh에서, 당신은 그것을 사용할 수 있습니다

rm *(.)

rm *(-.)모든 일반 파일을 삭제하거나 일반 파일 및 일반 파일에 대한 심볼릭 링크 삭제, rm *(^/)디렉터리를 제외한 모든 파일 삭제 등 의 변형을 삭제합니다 .

*생략하는 것도 참고하세요파일 클릭(이름이 로 시작하는 파일 .). find그것들을 포함할 것입니다. zsh에서는 *도트 파일이 기본적으로 생략됩니다. D예를 들어 괄호 안에 추가하여 rm *(.D)포함 할 수 있습니다.

관련 정보