일부 파일이 포함된 디렉터리와 다른 파일이 포함된 일부 폴더가 있습니다. 폴더나 그 내용을 건드리지 않고 홈 디렉토리에 있는 파일을 삭제하려고 합니다.
나는 이것을 사용하고 있습니다
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)
포함 할 수 있습니다.