2012-05-26 3 views
0

하위 문자열이 포함 된 여러 파일을 삭제하고 싶습니다. 예를 들어 하위 문자열 my이있는 모든 파일을 삭제하고 싶습니다. 검색 용어가 내가 삭제 관심 my 파일 myPhoto 있습니다을하기 때문에, photo.jpg를, myPhoto.jpg, beachMyPhoto.jpg, anyPhoto.jpg : 내 디렉토리 4 개 파일이 포함되어 있다고 가정 .jpgbeachMyPhoto.jpg (대소 문자 구분 안함).하위 문자열이 포함 된 이름이 여러 개인 파일을 효율적으로 삭제하십시오.

내 제안 된 솔루션 (내가 어떻게 해야할지)은 NSFileManager 클래스를 사용하고, contentsOfDirectoryAtPath:error: 함수를 사용하여 모든 디렉토리 내용을 읽은 다음 루프에 의해 검색합니다. 조회수가 발견되면 해당 파일을 삭제합니다.

제안 된 솔루션에서 내가 싫어하는 것은 특히 디렉토리에 파일이 너무 많고 적중 횟수가 적을 경우 효율적이지 않다는 것입니다. 이 작업을 수행하는보다 효율적인 방법이 있습니까?

+0

블록 메서드 인 indexesOfObjectsPassingTest를 사용할 수는 있지만 자신의 루프보다 빠르지는 모르겠다. 내부적으로 어떤 일종의 루프를 수행해야한다. – rdelmar

+1

http : // stackoverflow.com/questions/499673/getting-a-list-of-files-in-a-directory-with-a-glob – iTukker

답변

1

큰 배열을 메모리에로드하지 않으려면 -[NSFileManager enumeratorAtURL:includingPropertiesForKeys:options:errorHandler:]을 사용해보십시오. 디렉토리의 즉시 내용 만 원하기 때문에 반환하는 각 디렉토리에 대해 -[NSDirectoryEnumerator skipDescendants]을 호출합니다.

디렉토리의 모든 항목을 반복하여 검사하는 경우 일치 패턴을 테스트하는 것은 어쩔 수없는 일입니다. 당신이 사용하기를 희망하는 어떤 기술이라도 디렉토리의 모든 항목을 반복하고 일치하는 항목을 테스트해야합니다. 유일한 질문은 반복이 당신에게 노출되는지 아닌지입니다. 코코아에서 그렇습니다. 다른 곳을 원할 경우 glob() 기능으로 내려갈 수 있습니다.

관련 문제