Unfortunately, no, you cannot. There is a declined improvement request at Jenkins' issue tracker. The given reason is that filenames are mapped directly to variable names.
Other approaches typical in Groovy like
evaluate(new File("../tools/Tools.groovy"))
do not work as well, because the Jenkins global vars files are not native Groovy code but processed.
However, there is something you can use to better organize helper functions for those which are not custom pipeline steps.
I have an includes.groovy
file containing different functions like
def doSomething() {
}
def doSomethingElse() {
}
In a customPipelineStep.groovy
file I can then access them with
def call() {
includes.doSomethingElse()
}
So includes
works somehow like a namespace, and you could have multiple such utility files. They are no folders, but help organizing stuff.
Instead of defining custom steps in individual files, you could also group them together in files, but then you would have to wrap them in a script block within your pipeline to access them, as pointed out in the documentation. In the same way, include-functions are also publicly available in script-blocks, so be aware that they are not private.