2015-01-06 3 views
1

.git/ 폴더를 제외한 모든 파일을 제거하려면 rm -rf으로 전달할 수있는 옵션이 궁금합니다. 매뉴얼 페이지를 읽고 있었지만 전달할 수있는 옵션이 혼란 스러웠습니다. .git/을 제외하고 모두 제거하려면 명령이 어떨까요?특정 폴더 이외의 모든 파일 삭제

답변

1

한 가지 가능한 솔루션은 하지.git 다음 rm있는 디렉토리에있는 모든 항목을 찾을 수 find을 사용하는 것입니다 그들 :

배쉬와
> find . -mindepth 1 -maxdepth 1 ! -name .git -print0| xargs -0 rm -rf; 
1

:

shopt -s extglob 
rm -rf !(.git) 

warning http://pix.toile-libre.org/upload/original/1377510865.png 주의 이 명령을 실행하기 전에 good 디렉토리에 있어야합니다.

확인 http://mywiki.wooledge.org/glob#extglob

+0

이것은 최근 버전의 bash 버전의 기능입니까? 'GNU bash, 버전 4.1.16 (8) -release (x86_64-unknown-cygwin)'에서 작동하도록 할 수는 없습니다. – bgoldst

+1

오, 알겠습니다. 'extglob' 옵션 ('shopt -s extglob'을 사용하여 설정)이 작동하도록 설정되어 있어야합니다. – bgoldst

1

당신은 떠들썩한 파티를 GLOBIGNORE 변수를 사용하면 bash(1) 페이지에서 특정 사람

을 제외한 모든 파일을 제거하는 것을 수행 할 수 있습니다

A colon-separated list of patterns defining the set of filenames to be ignored 
by pathname expansion. If a filename matched by a pathname expansion pattern 
also matches one of the patterns in GLOBIGNORE, it is removed from the list 
of matches. 

는 우편 및 ISO 파일을 제외한 모든 파일을 삭제하려면 다음과 같이 GLOBIGNORE를 설정하십시오.

GLOBIGNORE=*.git 
rm -rf * 
unset GLOBIGNORE 

추 신. BASH에서만 작동

관련 문제