rm -rf /some/path/*
해당 디렉토리 (및 하위 디렉토리)에서 숨겨지지 않은 모든 파일을 삭제합니다.
rm -rf /some/path/.*
해당 디렉토리에있는 모든 숨겨진 파일 (하위 디렉토리는 아님)을 삭제하고 다음과 같은 오류 / 경고를 제공합니다.
rm: cannot remove directory: `/some/dir/.'
rm: cannot remove directory: `/some/dir/..'
에 대해 경고 / 오류가 발생하지 않고 대상 디렉토리에있는 모든 숨겨진 비 숨김 파일 및 재귀 적 폴더를 제거하는 적절한 방법은 무엇입니까 .
와는 ..
?
답변
항상 오류 메시지를 보낼 수 있습니다 /dev/null
rm -rf /some/path/.* 2> /dev/null
당신은 또한
rm -rf /some/path/
mkdir /some/path/
… 먼저 숨겨진 파일을 신경 쓸 필요가 없습니다.
답변
*
모든 비점 파일과 .[!.]*
일치하고 .
, 파일을 제외한 모든 점 파일 과 이름이로 시작하는 파일 ..
과 ..?*
일치 하고 ,를 제외한 모든 점 파일 과 일치합니다 ..
. 함께 .
및 이외의 모든 파일을 찾습니다 ..
. 이 세 가지 패턴 중 어느 것도 일치하지 않으면 자체로 확장됩니다. rm -f
존재하지 않는 인수에 대해서는 신경 쓰지 않으므로 중요하지 않습니다.
rm -rf ..?* .[!.]* *
을 사용할 수도 있습니다 find
. 이것은 더 복잡하지만 위의 와일드 카드가 시스템의 명령 행 길이 제한을 초과하여 확장 할 수있는 파일이 너무 많아도 작업 할 수있는 이점이 있습니다.
find . -name . -o -prune -exec rm -rf -- {} +
디렉토리를 제거하고 다시 작성하는 것이 더 명확 할 수 있습니다. 이것은 다른 프로그램이 원래 디렉토리에 파일을 동시에 작성하더라도 디렉토리가 비어있는 장점이 있습니다 (또는 경우에 따라 단점).
답변
이것이 대부분의 Linux 배포판에서 가장 편리한 방법이라는 것을 깨달았습니다.
ls -A1 | xargs rm -rf
어디
-A
= 모든 목록 제외를 .
하고..
-1
= 모든 항목을 한 줄에 넣습니다.
답변
dotglob
쉘 의 옵션을 변경하고을 사용 *
하거나 다음과 같은 것을 사용하십시오 find
.
find somedir -mindepth 1 -delete
답변
이것은 @ Giles 답변과 동일하게 작동하지만 더 컴팩트합니다.
rm -rf {,.[!.],..?}*
또는
rm -rf dir/to/files/{,.[!.],..?}*
if
안전을 위해 스크립트에서 사용법을 추가해야 합니다.
if [ -d "$DIR" ]; then
rm -rf ${DIR}/{,.[!.],..?}*
fi
답변
친구를 찾으십시오.
find ! -name '.' ! -name '..' -delete
% find ! -name '.' ! -name '..'
./test
./test4
./test4/.test6
./test3
./.test5
./test2
% find ! -name '.' ! -name '..' -delete
% find ! -name '.' ! -name '..'
%
재귀 적으로 현재 디렉토리 ($ PWD) 이외의 것을 검색하려면 find
명령 바로 뒤에 경로를 추가하십시오 . 예를 들어, find /path ! -name '.' ! -name '..' -delete
. n
여러 디렉토리 만 내림차순으로 -maxdepth n
하려면 /path
매개 변수 바로 뒤에있는 옵션 을 사용하십시오 .
위 명령은 Ubuntu 13.04 시스템에서 테스트되었습니다. 다른 최신 리눅스 시스템에서도 작동 할 것입니다.
답변
에 대한 경고 / 오류를받지 않고 대상 디렉토리에서 숨겨진 모든 파일과 폴더를 재귀 적으로 제거하는 올바른 방법은 무엇입니까? 그리고 ..?
문제의 디렉토리입니다 가정 ./dir
한 후,
rm -rf ./dir
./dir
숨겨진 파일과 디렉토리를 포함하여 재귀 적으로 ./dir
디렉토리 자체를 포함하여의 모든 파일을 제거 합니다.
디렉토리 자체를 삭제하지 않으려면 나중에 다시 생성하거나 사용하십시오.
find ./dir -mindepth 1 -delete
또는 당신이 경우 find
지원하지 않습니다 -delete
,
find ./dir -mindepth 1 -depth -exec rm -rf {} ';'
를 사용 -mindepth 1
하면 최상위 디렉토리를 유지할 수 있습니다 ./dir
.