Я пытаюсь найти один путь к файлу среди множества возможных путей, существующих в некотором "basedir".
Запрашиваемый путь к файлу имеет следующие характеристики:
- путь находится под известным «basedir», например, под
"C: \ somedir \ basedir \" - путь всегда содержит одно известное имя подкаталога, например, "SUBDIRNAMEWEKNOW"
- имя файла также известно, например, "filename. xml"
Итак искомый путь к файлу может быть, например:
C:\somedir\basedir\SUBDIRNAMEWEKNOW\someotherdir\filename.xml
C:\somedir\basedir\someotherdir\SUBDIRNAMEWEKNOW\someotherdir\filename.xml
или любой другой комбинацией любых подкаталогов под известным «basedir».
Наилучший уровень моих знаний Groovy сосредоточен в этот фрагмент кода:
def file_paths = new FileNameFinder().getFileNames(basedir, '**/filename.xml')
Вывод этого кода выглядит следующим образом:
C:\somedir\basedir\Test-Folder\filename.xml,
C:\somedir\basedir\Test-Folder\someotherdir\someotherdir\filename.xml,
C:\somedir\basedir\someotherdir\SUBDIRNAMEWEKNOW\filename.xml
C:\somedir\basedir\someotherdir\filename.xml
И только один путь является правильным. Тот с C: \ somedir \ basedir \ someotherdir \ SUBDIRNAMEWEKNOW \ filename. xml
Альтернативный код с регулярным выражением будет выглядеть так:
def file_paths = FileNameByRegexFinder().getFileNames(basedir, /.filename.xml/)
У вас есть идея? как я могу использовать шаблон или регулярное выражение для достижения этого?