2011-07-27 6 views
0

40,000 개가 넘는 이미지가있는 디렉토리를 방금 전달했으며이 디렉토리에는 모든 파일의 세 가지 버전이 포함되어 있으므로 서버간에 전송해야 할 부담이 있습니다.파일 확장명 앞에 특정 접미사가 붙은 모든 파일을 삭제하는 방법

저는 bash (OSX Terminal)를 사용하여 모든 파일 (예 : _web 또는 _thumb, .jpg (또는.))을 찾아서 제거하는 방법을 찾고 있습니다. gif 또는 .png, 또는 .bmp 등) 확장자를 포함 할 수 있습니다.

1.jpg 
1_web.jpg 
1_thumb.jpg 
2.gif 
2_web.gif 
2_thumb.gif 
etc. 

을 그리고 난 단지 유지 등 "1.JPG", "2.gif"를 원하는 :

그래서, 분명히, 나는 다음과 같은 파일이 있습니다.

이전에는 확장 프로그램의 이름을 바꿀 수 있었지만 커맨드 라인 푸는 매우 약하고 재사용 가능한 것을 찾기 위해 노력하고 있습니다. (필자는 이 프로젝트를 위해 지속적인 마이그레이션 스크립트 작업을하고 있으므로이 작업을 두 번 수행하십시오.)

편집 : 이것에 대해 더 많은 작업을 한 후에, 나는 rm과 xargs에 약간의 한계가 있음을 발견했다. 나는 기본적으로 아래의 허용 대답을 적응으로 돌아가 셨습니다 :

$ find . -name '*_thumb.*' -print0 | xargs -0 rm -f 
$ find . -name '*_web.*' -print0 | xargs -0 rm -f 

가 지금은 약 10,000 파일을 다운 해요 - 상당히 절감을 웹에 주변에 파일을 푸시면에서!

답변

2

한 (상대적으로 견고한) 옵션은 다른 (간단) 옵션을 실행하는 것입니다 당신이 디렉토리에 이미지 파일 이외의 아무것도하지 않는 가정

find . -iregex ".*\(_web\|_thumb\)\.\(jpg\|png\|bmp\)" -delete 

를 실행하는 것입니다

rm *_web.* *_thumb.* 

경고 : my_web.file.jpg와 같은 파일도 삭제되므로 안전하게 재생하려면 의존하지 말고 모든 확장 프로그램을 추가해야합니다. * 확장 프로그램이 항상 3 자 길이 될 것이므로 그렇게 사용할 수 있습니다. * _thumb 같은 mething ???

+0

작동 할 수 있습니다 상상 와일드 카드 문자를 통해 (그래서 두 번째 예제는 잘 작동하지 않았다.) 참조 : http://www.moundalexis.com/archives/000035.php – geerlingguy

0

나는 MAC 또는 내 앞에 UNIX 터미널을 가지고 있지 않지만, 나는 다음과 같이 내가 그 사실 RM은 받아 들일 수있는 방법을 많은 인자에 대한 제한이 발견

rm *_web.jpg 
rm *_web.jpg 
rm *_thumb.gif 
관련 문제