2016-08-28 2 views
0

구조체에 서브 폴더가있는 주어진 폴더 안에 * .txt 파일을 어떻게 찾을 수 있습니까? 12345 \ 3\ 128 \ txt \ 100.txt, 기본 폴더는 다른 하위 폴더 또는 txt를 포함 할 수 있습니다 파일 형식이지만, 서브 폴더에있는 txt 파일을 얻고 싶습니다. 12345 \ 3\ 128 \ txt \ 100.txt. 모든 TXT 폴더하위 폴더가있는 지정된 폴더에서 txt 파일 찾기?

내부 즉, TXT 파일 나는이 시도 :

Dim txtFilesArray As String() = Directory.GetFiles(targetDirectory, "*.txt", SearchOption.AllDirectories) 

을하지만 모든 TXT 파일을 얻는다?

답변

1
Dim txtFiles = Directory.EnumerateFiles(targetDirectory,"*.txt",SearchOption.AllDirectories) 
      .Where(Function(f) f Like "*\#*\#*\#*\txt\#*.txt") 

경우 0 9-# 일치하는 숫자와 * 일치하는 0 개 이상의 문자

거나 느린 RegEx 버전

Dim txtFiles = Directory.EnumerateFiles(targetDirectory,"*.txt",SearchOption.AllDirectories) 
      .Where(Function(f) RegEx.IsMatch(f, ".*\\\d+\\\d+\\\d+\\txt\\\\d+\.txt")) 

For Each txtFile In txtFiles 
    '... 
Next 
+0

** 12345 \ 3\ 128 \ txt \ 100.txt ** 구조의 폴더 이름은 5 자리 이름 대신 첫 번째 폴더와 다를 수 있습니다. 6 자리 이름 또는 4 자리 이름이 될 수 있습니다. 모든 서브 폴더가 잘 돌아 간다면,'* #### \ #### 대신'(\ d +) \ (\ d +) \ (\ d +) \ txt \ (\ d +) .txt'처럼 사용할 수 있습니까? # \ ### \ txt \ ###. txt' 같은 코드로? –

+0

@Don_B'Like '연산자는 그것을 지원하지 않지만'# *'뒤에있는 숫자와 임의의 숫자와 일치하도록 내 대답을 업데이트했습니다. 'RegEx' 버전이 제대로 작동하는지 확신 할 수 없습니다. – Slai

+0

'Like'연산자의 하이픈 "-"문자와 일치하는 것은 무엇입니까? –

0

이 모든 파일을 반환하지만 사람들은 path에 포함 :

Dim path = "C:\" 
Dim di As New DirectoryInfo(path) 
Dim files = di _ 
    .GetFiles("*.txt", SearchOption.AllDirectories) _ 
    .Where(Function(info) info.DirectoryName <> path) _ 
    .Select(function(info) info.FullName) _ 
    .ToArray() 
관련 문제