programing tip

와일드 카드로 여러 파일 삭제

itbloger 2020. 11. 13. 07:54
반응형

와일드 카드로 여러 파일 삭제


리눅스에서는 쉽지만 Windows에서 C #으로 수행하는 방법을 이해할 수는 없습니다. 와일드 카드와 일치하는 모든 파일을 삭제하고 싶습니다 f*.txt. 어떻게해야합니까?


다음 DirectoryInfo.EnumerateFiles기능을 사용할 수 있습니다 .

var dir = new DirectoryInfo(directoryPath);

foreach (var file in dir.EnumerateFiles("f*.txt")) {
    file.Delete();
}

(물론 오류 처리를 추가하고 싶을 것입니다.)


나는 이것이 이미 대답되었고 좋은 대답이라는 것을 알고 있지만 .NET 4.0 이상 에는 대안 있습니다. Directory.EnumerateFiles()따라서 다음을 사용하십시오 .

foreach (string f in Directory.EnumerateFiles(myDirectory,"f*.txt"))
{
    File.Delete(f);
}

의 단점은 DirectoryInfo.GetFiles()파일 목록을 반환한다는 것입니다. 시간의 99.9 %가 좋습니다. 단점은 폴더에 수만 개의 파일이 포함되어있는 경우 (드문 경우 임) 매우 느려지고 일치하는 파일을 통해 열거하는 속도가 훨씬 빠르다는 것입니다.


Directory.GetFiles 메서드를 와일드 카드 오버로드와 함께 사용할 수 있습니다 . 패턴과 일치하는 모든 파일 이름을 반환합니다. 그런 다음 이러한 파일을 삭제할 수 있습니다.


이 스레드가 지금은 조금 오래되었다는 점에 감사하지만 linq를 사용하려면

Directory.GetFiles("f:\\TestData", "*.zip", SearchOption.TopDirectoryOnly).ToList().ForEach(f => File.Delete(f));

참고 URL : https://stackoverflow.com/questions/8807209/deleting-multiple-files-with-wildcard

반응형