2012-06-18 1 views
4

주어진 확장자를 가진 디렉토리를 제외하고 주어진 이름의 디렉토리에있는 모든 파일을 삭제하고 싶습니다. 나는.찾기를 사용하여 주어진 확장자를 가진 파일을 제외하고 주어진 이름을 가진 모든 파일을 삭제합니다.

foo.txt foo.exe foo.jpg foo.png foo.something foo.somethingelse bar.jpg bar.exe 

내가 foo.txt foo.jpg foo.png foo.something foo.somethingelse

제거하려는하지만 결정적으로 나는이 작업을 수행 할 수있는 쉬운 라이너가 있는가 foo.exe

제거하고 싶지 않은 : 우리는있는 디렉토리가?

+0

http://superuser.com/questions/193631/when-running-rm-rf-is-it-possible-to-exlulu-certain-subdirectories –

답변

7

당신은 일을 제외하는 find 명령 안에 !을 사용할 수 있습니다 감사합니다, 그래서 뭔가 같은 : 현재 디렉토리에 foo.* 일치하는 파일을 삭제하고 혼자 foo.exe을 떠나야한다

find . -maxdepth 1 -type f -name "foo.*" ! -name foo.exe -exec rm '{}' \; 
     ----------- ------- ------------- --------------- ---------------- 
     in this dir files named foo.* but not foo.exe ...destroy them. 

.

+0

당신이 지금 가지고있는 방식을 '찾지 마라' 하위 디렉토리에서 파일을 검색하고 찾아야합니다 (이 경우 삭제)? – Levon

+0

@ Levon : 우수한 점 - maxdepth = 1을 사용하면 현재 디렉토리로 제한됩니다. –

+0

돌아왔다 : find. - 유형 f - 최대 깊이 1 - 이름 "foo. *"! -name foo.exe -exec rm '{}'\; find : 경고 : 옵션이 아닌 인수 -type 뒤에 -maxdepth 옵션을 지정했지만 옵션이 위치하지 않습니다 (-maxdepth는 그 전에 지정된 테스트와 그 뒤에 지정된 테스트에 영향을줍니다). 다른 인수 앞에 옵션을 지정하십시오. –