Получить все файлы в папке и в определенной подпапке в PowerShell

Я получил следующую структуру папок для вывода моей программы:

-Documents
    -Output
        -data
            file1.pdf
            file2.pdf
        -lib_dvs
            data.txt
            error.log
    -Testing
        _repl_dev
            -data
                name.pdf
                foo.pdf
            -lib_dvs
                data.txt
                error.log
        _repl_prod
            -data
                name.pdf
                foo.pdf
            -lib_dvs
                data.txt
                error.log

Моя цель - прочитать все файлы PDF в папке «данные». в этом примере это будет:

Documents/Output/data/file1.pdf
Documents/Output/data/file2.pdf
Documents/Testing/_repl_dev/data/name.pdf
Documents/Testing/_repl_dev/data/foo.pdf
Documents/Testing/_repl_prod/data/name.pdf
Documents/Testing/_repl_prod/data/foo.pdf

Я уже получил это:

Get-ChildItem -Path "$([Environment]::GetFolderPath('MyDocuments'))/**/data/" -Include *.pdf -Recurse

Также возможно, что в папке вывода есть более одной подпапки, содержащей папку данных, например «Documents / Output / Foo / Bar / data /».

Есть идеи, как я могу этого добиться?


person Tobias Fuchs    schedule 18.12.2019    source источник


Ответы (1)


Вы можете сделать это, используя

Get-ChildItem -Path 'D:\test' -Filter '*.pdf' -File -Recurse | 
    Where-Object { $_.DirectoryName -like '*\data' } | 
    ForEach-Object {
        # do something with the found files. 
        # for demo, just output the FullNames
        $_.FullName
    }

Конечно, измените корневой путь D:\test

person Theo    schedule 18.12.2019