VE Lua Documentation

Press F to search!

findFiles

Definition


-- @/=[C]:-1
function findFiles(...)

Callers

@/lua/ge/extensions/gameplay/missions/missionTypes/flowMission.lua
    local rulesFolder = layer.dir .. "rules/"
    arrayConcat(rulesFiles,FS:findFiles(rulesFolder, "*.html", -1, true, false))
  end
@/lua/ge/extensions/gameplay/drift/general.lua
local function onExtensionLoaded()
  driftExtensions = FS:findFiles("/lua/ge/extensions/gameplay/drift", '*.lua', -1, false, false)
end
@/lua/ge/extensions/editor/vehicleEditor/staticEditor/veJBeamSpellchecker.lua
local function analyze()
  local filePaths = FS:findFiles('vehicles', "*.jbeam", -1, false, false)
@/lua/ge/extensions/gameplay/statistic.lua
  local moduleDir = "lua/ge/extensions/gameplay/statisticModules"
  local moduleFiles = FS:findFiles(moduleDir, "*.lua", -1, true, false)
  if moduleFiles then
@/lua/ge/extensions/editor/toolUtilities/meshAuditionMgr.lua
  for j = 1, #staticMeshPaths do
    local meshPaths = FS:findFiles(staticMeshPaths[j], "*.dae", -1, true, false)
    for i = 1, #meshPaths do
@/lua/ge/extensions/flowgraph/nodes/vehicle/ai/scriptAI/pathFromFile.lua
function C:init()
   self.files = FS:findFiles(trackFilePath, '*' .. trackFileExt, -1, true, false)
   self.fnShort = ""
  if im.Button("Refresh Files") then
    self.files = FS:findFiles(trackFilePath, '*' .. trackFileExt, -1, true, false)
    self.fnShort = ""
@/lua/ge/extensions/util/nodeBeamExport.lua

  local files = FS:findFiles(dir, '*.nbexport.json', -1, false, false) or {}
  local maxIdx = 0
@/lua/ge/extensions/editor/crawlEditor/missionPortTool.lua
  -- Find all mission directories
  local missionDirs = FS:findFiles(missionsPath, "*", 0, false, true)
    if FS:directoryExists(missionsPath) then
      local missionDirs = FS:findFiles(missionsPath, "*", 0, false, true)
@/lua/ge/extensions/editor/sidewalkSpline/kit.lua
  end
  local meshPaths = FS:findFiles(kitFolderPath, "*.dae", -1, true, false)
  for i = 1, #meshPaths do
@/lua/ge/extensions/editor/util/editorElementHelper.lua
      local fp, fn, ext = path.split(c.missionFolder .. file, true)
      local files = FS:findFiles(fp, fn, -1, true, false)
      foundFile = files[1]
        local fp, fn, ext = path.split(file, true)
        local files = FS:findFiles(fp, fn, -1, true, false)
        e.foundFile = files[1]
@/lua/ge/extensions/core/camera.lua
    constructorsCache = {}
    for _,file in ipairs(FS:findFiles(camDirectory, "*.lua", 1, false, false)) do
      local _,camMode,_ = path.splitWithoutExt(file)
@/lua/ge/extensions/editor/assetBrowser.lua
  parent.dirCount = 0
  local tbl = FS:findFiles(parent.path, "*", 0, false, true)
  for _, path in ipairs(tbl) do
  parent.processing = true
  local tbl = FS:findFiles(parent.path, "*", 0, false, true)
  for _, path in ipairs(tbl) do

        local tbl = FS:findFiles(dir.path, "*", 0, false, true)
        for _, path in ipairs(tbl) do
  var.levelPath, var.levelName = getLevelPathAndName()
  var.numberOfAllAssetsAndDirs = #FS:findFiles(var.levelPath, "*", -1, false, true)
  if editor.getPreference("assetBrowser.general.loadVehicleAssets")== true then
    var.numberOfAllAssetsAndDirs = var.numberOfAllAssetsAndDirs + #FS:findFiles("/vehicles/", "*", -1, false, true)
  end
  if editor.getPreference("assetBrowser.general.loadGameplayAssets") == true then
    var.numberOfAllAssetsAndDirs = var.numberOfAllAssetsAndDirs + #FS:findFiles("/gameplay/", "*", -1, false, true)
  end
  if editor.getPreference("assetBrowser.general.showAllDataFolders") == true then
    var.numberOfAllAssetsAndDirs = var.numberOfAllAssetsAndDirs + #FS:findFiles("/", "*", -1, false, true)
  end
    table.insert(var.allDirs, newDir)
    var.numberOfAllAssetsAndDirs = var.numberOfAllAssetsAndDirs + #FS:findFiles(folder.path, "*", -1, false, true)
  end
      var.vehicles = newDirectory("/vehicles/", "vehicles", true, true, false)
      var.numberOfAllAssetsAndDirs = var.numberOfAllAssetsAndDirs + #FS:findFiles("/vehicles/", "*", -1, false, true)
    else
      var.vehicles = nil
      var.numberOfAllAssetsAndDirs = var.numberOfAllAssetsAndDirs - #FS:findFiles("/vehicles/", "*", -1, false, true)
    end
@/lua/ge/main.lua
function convertLevelPrefabs(levelPath)
  local filenames = FS:findFiles(levelPath, "*.prefab\t*.prefab.json", -1, true, false)
  log('I', 'convertLevelPrefabs', 'Converting the following files: '..dumps(filenames or {}))
function validateLevelPrefabs(levelPath)
  local filenames = FS:findFiles(levelPath, "*.prefab.json", -1, true, false)
  log('I', 'validateLevelPrefabs', 'Validating the following files: '..dumps(filenames or {}))

      local filenames = FS:findFiles('/', pattern, -1, true, false)
      -- dump(filenames)
function loadDirRec(dir)
  local foundfiles = FS:findFiles(dir, "*materials.cs\t*materials.json\t*datablocks.json", -1, true, false)
  local csMaterialFiles = {}
@/lua/ge/extensions/editor/main.lua
  loadExtensionsSettings()
  local extensionFiles = FS:findFiles('/lua/ge/extensions/editor/', '*.lua', 0, false, false)
@/lua/ge/extensions/career/modules/inventory.lua
  -- load the vehicles
  local files = FS:findFiles(savePath .. "/career/vehicles/", '*.json', 0, false, false)
  for i = 1, tableSize(files) do
  -- Remove vehicle files for vehicles that have been deleted
  local files = FS:findFiles(currentSavePath .. "/career/vehicles/", '*.json', 0, false, false)
  for i = 1, tableSize(files) do
@/lua/ge/extensions/core/audio.lua
local function loadBanksInFolder(folder)
  local bankFiles = FS:findFiles(folder, '*.bank', 0, true, false)
local function populateAssetBanks(directory)
  local bankFiles = FS:findFiles(directory, '*.bank', 0, true, false)
  bankFiles = tableMerge(bankFiles, FS:findFiles(directory..'/mods', '*.bank', 0, true, false))
  local bankFiles = FS:findFiles(directory, '*.bank', 0, true, false)
  bankFiles = tableMerge(bankFiles, FS:findFiles(directory..'/mods', '*.bank', 0, true, false))
  asset_banks = {}
local function populateMetaBanks(directory)
  local bankFiles = FS:findFiles(directory, '*.bank', 0, true, false)
  bankFiles = tableMerge(bankFiles, FS:findFiles(directory..'/mods', '*.bank', 0, true, false))
  local bankFiles = FS:findFiles(directory, '*.bank', 0, true, false)
  bankFiles = tableMerge(bankFiles, FS:findFiles(directory..'/mods', '*.bank', 0, true, false))
  local meta_banks = {}
@/lua/ge/client/lighting.lua
  -- log('I', 'lightManager', 'Finding all the system cs files')
  -- local files = FS:findFiles('/core/scripts/client/lighting/', 'init.cs', 1, true, false)
  -- dump(files)
  -- log('I', 'lightManager', 'Finding all the system lua files')
  local files = FS:findFiles('lua/ge/client/lighting/', 'init.lua', 1, true, false)
  -- dump(files)
  -- log('I', 'lightManager', 'Finding all the system cs files')
  -- local files = FS:findFiles('/core/scripts/client/lighting/', 'init.cs', 1, true, false)
  -- dump(files)
  -- log('I', 'lightManager', 'Finding all the system lua files')
  local files = FS:findFiles('lua/ge/client/lighting/', 'init.lua', 1, true, false)
  -- log('I', 'lightManager', '      files = '..dumps(files))
@/lua/ge/extensions/editor/assemblySpline/molecule.lua
  -- Collect all .dae files in the folder and subfolders.
  local meshPaths = FS:findFiles(kitFolderPath, "*.dae", -1, true)
@/lua/ge/extensions/core/replay.lua
  local result = {}
  for i,file in ipairs(FS:findFiles('replays', '*.rpl', 1, false, false)) do
    file = string.gsub(file, "/(.*)", "%1") -- strip leading /
  -- add all the missions replays that have been automatically recorded
  for i, file in ipairs(FS:findFiles(M.getMissionReplaysPath(), '*.rpl', 0, false, false)) do
    table.insert(filesWithUserSaved, {file = file})
  -- add all the user saved replays that correspong to the current environment. Ie freeroam or career, save slot
  for i, file in ipairs(FS:findFiles(getCurrentUserSavedReplayFilesPath(), '*.rpl', 0, false, false)) do
    table.insert(filesWithUserSaved, {file = file, userSaved = true})
@/lua/ge/extensions/util/dependencyTree.lua

local function findFiles(pattern)
  return FS:findFiles(folder, pattern, -1, true, false)
local function findFiles(pattern)
  return FS:findFiles(folder, pattern, -1, true, false)
end
  -- first: find levels
  local filenames = findFiles('*.level.json\t*.material.json\t*.datablock.json')
  for _, filename in pairs(filenames) do

  local shapeInfoFiles = findFiles('*.meshes.json')
@/lua/ge/extensions/core/trafficSignals.lua
    artDir = artDir..'art/shapes/'
    for _, f in ipairs(FS:findFiles(artDir, '*', -1, true, false)) do
      if string.find(f, shapeFile) then
      artDir = 'art/shapes/' -- if not found, then search the common assets
      for _, f in ipairs(FS:findFiles(artDir, '*', -1, true, false)) do
        if string.find(f, shapeFile) then
@/lua/common/json-ast.lua
local function testFiles(writeAST, reportOK)
  local filenames = FS:findFiles('/', '*.jbeam', -1, false, false)
  local fileCount = #filenames
@/lua/ge/extensions/gameplay/missions/missions.lua
    missionTypes = {}
    for _,missionFile in ipairs(FS:findFiles(missionTypesDir, missionTypeConstructorFilename..'.lua', 1, false, true)) do
      local dir,_,_ = path.splitWithoutExt(missionFile)
    -- load filebased missions
    for _,missionInfo in ipairs(FS:findFiles(missionsDir, 'info.json', -1, false, true)) do
      --dump(missionInfo)
local function onExtensionLoaded()
  local files = FS:findFiles('/lua/ge/extensions/gameplay/missions/proceduralMissionGenerators/','*.lua',-1)
  local count = 0
@/lua/ge/extensions/editor/barriersEditor.lua
  local levelPartLength = (directory:len())+1
  for _, f in ipairs(FS:findFiles("/levels/"..level.."/", searchTerm..".prefab", -1, true,true)) do
    if not prefabsIndex[f] then
@/lua/ge/extensions/util/docCreator.lua
local function getLanguagesAvailable()
  local locales = FS:findFiles('/locales/', '*.json', -1, true, false)
  local res = {}
  -- gather data from each known inputmap file (json files only, which correspond to the default configs shipped with the game)
  local inputmapPaths = FS:findFiles('/settings/inputmaps/', '*.json', -1, true, false)
  for _,inputmapPath in ipairs(inputmapPaths) do
@/lua/ge/extensions/core/hotlapping.lua
    -- we need to search through the entire old root directory due to a previous bug
    local oldFiles = FS:findFiles(oldRootDir, '*.json', -1, true, false)
    for _, file in ipairs(oldFiles) do
  local tracks = {}
  local files = FS:findFiles(rootDir..getCurrentLevelIdentifier()..'/', '*.race.json', -1, true, false)
  local oldFiles = FS:findFiles(oldRootDir, '*.json', -1, true, false)
  local files = FS:findFiles(rootDir..getCurrentLevelIdentifier()..'/', '*.race.json', -1, true, false)
  local oldFiles = FS:findFiles(oldRootDir, '*.json', -1, true, false)
  files = arrayConcat(files, oldFiles)
@/lua/ge/extensions/gameplay/missions/missionScreen.lua
  M.savedLayouts = {}
  for _, file in ipairs(FS:findFiles("/gameplay/testing", "*.json", 1, false, true)) do
    local layout = jsonReadFile(file)
@/lua/ge/extensions/editor/dragRaceEditor/dragSettings.lua
  if levelName then
    local levelSettingsFiles = FS:findFiles("/levels/" .. levelName .. "/dragstrips/", "*.dragSettings.json", -1, true, false)
    log('D', 'drag_race_editor', 'Found ' .. #levelSettingsFiles .. ' level settings files')
      if pathExists then
        local dragStripRaceFiles = FS:findFiles(dragStripRacePath, "*.dragSettings.json", -1, true, false)
        log('D', 'drag_race_editor', 'Found ' .. #dragStripRaceFiles .. ' dragStripRace settings files')
      if pathExistsAPM then
        local dragStripAPMFiles = FS:findFiles(dragStripAPMPath, "*.dragSettings.json", -1, true, false)
        log('D', 'drag_race_editor', 'Found ' .. #dragStripAPMFiles .. ' dragStripAPM settings files')
@/lua/ge/extensions/freeroam/organizations.lua
    -- parse any other organization files inside the "/organizations" folder
    for _,file in ipairs(FS:findFiles("gameplay/organizations/", '*.organizations.json', -1, false, true)) do
      local data = jsonReadFile(file)
@/lua/common/jbeam/io.lua
  for _, dir in ipairs(directories) do
    local filenames = FS:findFiles(dir, "*.jbeam", -1, false, false)
    for _, filename in ipairs(filenames) do
@/lua/ge/extensions/core/settings/settings.lua
  table.insert(options.userLanguagesAvailable, {key="", name="Automatic", isOfficial=true}) -- the empty ('') language will be auto - it'll use the OS/steam lang
  local locales = FS:findFiles('/locales/', '*.json', -1, true, false)
@/lua/ge/extensions/editor/api/dynamicDecals/textures.lua
local function reloadTextureFiles()
  textureFiles = FS:findFiles(texturesDirectoryPath, "*.jpg\t*.png", -1, true, false)
  tags = {}
@/lua/ge/extensions/gameplay/discover.lua
  discoversById = {}
  local discoverFiles = FS:findFiles("lua/ge/extensions/gameplay/discover/", "*.lua", 0, false, false)
  for _, file in ipairs(discoverFiles) do
@/lua/common/extensions.lua

  local luaFiles = FS:findFiles(directory, '*.lua', -1, true, false)
  for _,luaFilename in pairs(luaFiles) do
  -- addModulePath(directory)
  local filePaths = FS:findFiles(directory, "*.lua", -1, true, false)
@/lua/ge/extensions/ui/gameplaySelector/tiles.lua

local generatorFiles = FS:findFiles('lua/ge/extensions/ui/gameplaySelector/tileGenerators/', '*.lua', 1, true, false)
for _, filePath in ipairs(generatorFiles) do
@/lua/ge/extensions/ui/apps.lua
local function getAvailableAppList()
  local jsonFiles = FS:findFiles(appsDir, 'app.json', -1, false, false)
  local res = {}
  local res = {}
  for _, originalFilePath in ipairs(FS:findFiles(originalLayoutPath, '*.uilayout.json', -1, false, false)) do
    local userFilePath = originalFilePath:gsub(originalLayoutPath, layoutPath)
  -- now go over all files in the user-ui folder and add them too.
  local jsonFiles = FS:findFiles(layoutPath, '*.uilayout.json', -1, false, false)
  for _, fn in ipairs(jsonFiles) do
@/lua/ge/extensions/gameplay/crawl/saveSystem.lua
  local pattern = "*." .. type .. ".json"
  local files = FS:findFiles(path, pattern, 1, false, true)
@/lua/ge/extensions/editor/flowgraphEditor.lua
    if restoreFiles == nil then
      local allFiles = FS:findFiles(autoSaveDir, '*flow.json', -1, true, false)
      local filesByOriginal = {}
@/lua/ge/extensions/gameplay/drift/saveLoad.lua
    --dump(levelSpotsDir)
    for _, file in ipairs(FS:findFiles(levelSpotsDir, "spot.driftSpot.json", -1, false, true)) do
      local dir, _, _ = path.split(file)
@/lua/ge/extensions/career/career.lua
    local extensionFiles = {}
    local files = FS:findFiles(careerModuleDirectory, '*.lua', -1, true, false)
    for i = 1, tableSize(files) do
    end
    local files = FS:findFiles(autosavePath .. "/career/vehicles/", '*.json', 0, false, false)
    data.vehicleCount = #files
@/lua/ge/extensions/editor/mainMenu.lua
  if levelName then
    local unpackedModsList = FS:findFiles( "/mods/unpacked/", "*", 0, false, true )
    for _, modPath in ipairs(unpackedModsList) do
@/lua/ge/extensions/gameplay/sites/sitesManager.lua
    sitesByLevel[level] = {}
    local sites = FS:findFiles(info.misFilePath, '*.sites.json', -1, false, true)
@/lua/ge/extensions/util/renderComponentsAPI.lua
    settingByKey = {}
    local rendererComponentFiles = FS:findFiles("/renderer/components/", "*.rendercomponent.json", -1, false, false)
    for _, filename in ipairs(rendererComponentFiles) do
  local result = {}
  for i,file in ipairs(FS:findFiles('art/postfx', '*.png', 0, false, false)) do
    table.insert(result, {filename=file})
@/lua/ge/extensions/editor/terrainEditor.lua
        tb:exportLayerMaps(dir .. tbName .. "_layerMap", "png")
        local opMaps = FS:findFiles(dir, tbName .. "_layerMap_*.png", -1, false, true)
        data.opacityMaps = {}
@/lua/ge/extensions/editor/vehicleEditor/staticEditor/veJBeamBeautifier.lua
local function beautifyJBeamFiles(pathToBeautify)
  local jbeamFilePaths = path.is_file(pathToBeautify) and {pathToBeautify} or FS:findFiles(pathToBeautify, "*.jbeam", -1, false, false)
  --local jbeamFilePaths = FS:findFiles('/', "*.jbeam", -1, false, false)
  local jbeamFilePaths = path.is_file(pathToBeautify) and {pathToBeautify} or FS:findFiles(pathToBeautify, "*.jbeam", -1, false, false)
  --local jbeamFilePaths = FS:findFiles('/', "*.jbeam", -1, false, false)
  --local jbeamFilePaths = {'vehicles/bx/bx_doors.jbeam'}
@/lua/ge/extensions/util/export.lua
    else
      local foundFiles = FS:findFiles('/', filepathIn, -1, false, false)
      if #foundFiles == 1 then
@/lua/ge/extensions/editor/assetManagementTool.lua

  local filenames = FS:findFiles(searchForDuplicatesPath, '*.*', depth, false, false)
  local hash

    filenames = FS:findFiles(folder, filter, -1, true, false)
    total = #filenames
  coroutine.yield()
  filenames = FS:findFiles("/assets", "*.*", -1, true, false)
  local totalFileCount = #filenames
  coroutine.yield()
  filenames = FS:findFiles(searchPath, filter, depth, true, true)
  local totalFilenames = #filenames
@/lua/ge/extensions/editor/materialEditor.lua
local function getPreviewMeshes()
  previewMeshes = FS:findFiles(previewMeshesPath, "*.dae", -1, true, false)
  local previewMeshNames = {}
@/lua/common/jbeam/interaction.lua

  local interactionFilenamesVehicle = FS:findFiles(vehicle.vehicleDirectory, '*.interaction.json', -1, false, false)
  local interactionFilenames = FS:findFiles('/vehicles/common/', '*.interaction.json', -1, false, false)
  local interactionFilenamesVehicle = FS:findFiles(vehicle.vehicleDirectory, '*.interaction.json', -1, false, false)
  local interactionFilenames = FS:findFiles('/vehicles/common/', '*.interaction.json', -1, false, false)
  arrayConcat(interactionFilenames, interactionFilenamesVehicle)
@/lua/ge/extensions/career/modules/branches/leagues.lua
    leaguesById = {}
    local files = FS:findFiles("/gameplay/", "*.leagues.json", -1, true, false)
    table.sort(files)
@/lua/ge/extensions/core/vehicles.lua
  -- get .pc files and fix them up for the new system
  local pcfiles = FS:findFiles("/vehicles/" .. vehicleName .. "/", "*.pc", 0, true, false)
  for _, fn in pairs(pcfiles) do
    profilerPushEvent("single computeFileCache")
    local jfiles = FS:findFiles("/vehicles/", "info*.json\t*.pc\t*.png\t*.jpg\t*.paintLibrary.json", -1, true, true)
    if p then p:add("find") end
    profilerPushEvent("batch computeFileCache")
    local jfiles = FS:findFiles("/vehicles/", "info*.json\t*.pc\t*.png\t*.jpg\t*.paintLibrary.json", -1, true, true)
    if p then p:add("find") end
  if string.sub(vehicleDirectory, -1) ~= '/' then vehicleDirectory = vehicleDirectory .. '/' end
  local res = FS:findFiles(vehicleDirectory, '*.jbeam', -1, false, false) -- recursive search
  cache[model] = res
    if data.model then
      if next(FS:findFiles('/vehicles/'..data.model..'/', '*.jbeam', 1, false, false)) then
        --TorqueScriptLua.setVar( '$beamngVehicle', data.model ) -- Set the model
        if not visitedDirs[modelName] then
          if not next(FS:findFiles('/vehicles/'..modelName..'/', '*.jbeam', 1, false, false)) then
            allVehDirsExist = false
    if data.model then
      if next(FS:findFiles('/vehicles/'..data.model..'/', '*.jbeam', 1, false, false)) then
        TorqueScriptLua.setVar( '$beamngVehicle', data.model ) -- Set the model
        if not visitedDirs[modelName] then
          if not next(FS:findFiles('/vehicles/'..modelName..'/', '*.jbeam', 1, false, false)) then
            allVehDirsExist = false
@/lua/ge/extensions/core/environment.lua
    local levelDir, filename, ext = path.split(levelPath, "(.-)([^/]-([^%.]*))$")
    local files = FS:findFiles(levelDir..'/groundModels/', '*.json', -1, true, false)
@/lua/ge/extensions/editor/flowgraph/references.lua
  -- check directory
  self:fillNodeTable(FS:findFiles("/levels/", '*.flow.json', -1, true, false))
  self:fillNodeTable(FS:findFiles("/gameplay/", '*.flow.json', -1, true, false))
  self:fillNodeTable(FS:findFiles("/levels/", '*.flow.json', -1, true, false))
  self:fillNodeTable(FS:findFiles("/gameplay/", '*.flow.json', -1, true, false))
  self:fillNodeTable(FS:findFiles("/lua/ge/extensions/flowgraph/examples", '*.flow.json', -1, true, false))
  self:fillNodeTable(FS:findFiles("/gameplay/", '*.flow.json', -1, true, false))
  self:fillNodeTable(FS:findFiles("/lua/ge/extensions/flowgraph/examples", '*.flow.json', -1, true, false))
@/lua/ge/extensions/editor/gen/world.lua
	pref = pref or '*'
	local matFiles = FS:findFiles(path, pref..'mat.json', -1, true, false)
	lo('>> materialLoad:'..path..':'..#matFiles)
local function daeLoad_(pth, tp, mute)
	local afile = FS:findFiles(pth..tp, '*.dae', -1, true, false)
	if mute then
		afile = FS:findFiles(pth..tp, '*.dae', -1, true, false)
	end
	local pth = U.path2disk({editor.getLevelPath(), 'bat', 'test'})
	local list = FS:findFiles(pth, '*.dae', -1, true, false)
		lo('??^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ building4test:'..tostring(pth)..':'..tableSize(amesh))
	-- JSON
	list = FS:findFiles(pth, '*.json', -1, true, false)
	for i,s in pairs(list) do
	pth = U.path2disk({editor.getLevelPath(), 'forest'})
	list = FS:findFiles(pth, '*.json', -1, true, false)
--		lo('?? onVal_gen_unique:'..tostring(pth)..':'..tableSize(amesh))
		local pth = U.path2disk({editor.getLevelPath(), 'bat', 'test'})
		local amesh = FS:findFiles(pth, '*.dae', -1, true, false)
			lo('?? onVal_gen_unique:'..tostring(pth)..':'..tableSize(amesh))
		-- to static meshes
		local amesh = FS:findFiles(editor.getLevelPath()..'/bat'..'/test', '*.dae', -1, true, false)
		local dpos = {}
	--    local dir = FS:openDirectory(dirname)
	--    local ifdir = FS:findFiles(dirname, "*", -1, true, false)
	--      lo('?? ifdir:'..tostring(ifdir))
@/lua/ge/extensions/editor/raceEditor.lua
            table.clear(allFiles)
            for _, f in ipairs(FS:findFiles("/", '*.race.json', -1, true,true)) do
              local dir, filename, ext = path.split(f)
@/lua/ge/extensions/core/busRouteManager.lua
local function load(mapFolder)
  local jFiles = FS:findFiles(mapFolder.."/buslines/", '*.buslines.json', -1, true, false)
  for _,jFilename in pairs(jFiles) do
@/lua/ge/extensions/util/sortLines.lua
  log('I', 'sortLines', 'Handling files in: ' .. path)
  local targets = FS:findFiles(path, '*.json', 1, true, true)
  for i, target in ipairs(targets) do
@/lua/ge/extensions/editor/vehicleDetailViewer.lua
local function refreshLayoutFiles()
  availableLayoutFiles = FS:findFiles(saveFolder, '*.vehicleDetailSetting.json', -1, false, false) or {}
end
@/lua/ge/extensions/util/testJSONFilesSyntax.lua
local function onExtensionLoaded()
  local filePaths = FS:findFiles('/', "*.jbeam\t*.pc\t*.json", -1, true, false)
  for _, filePath in ipairs(filePaths) do
@/lua/vehicle/extensions/gameplayInterface.lua
  local moduleDir = "lua/vehicle/extensions/gameplayInterfaceModules"
  local moduleFiles = FS:findFiles(moduleDir, "*.lua", -1, true, false)
  if moduleFiles then
@/lua/ge/extensions/util/compileMeshes.lua
  -- old material.cs support
  local matFiles = FS:findFiles( path, 'materials.cs', -1, true, false)
  for k,v in pairs(matFiles) do
  end
  local matFiles = FS:findFiles( path, '*materials.json', -1, true, false)
  for k,v in pairs(matFiles) do

  local allFilesCheckOnly = FS:findFiles('/', '*.dae', -1, true, false) -- do not use for iterating

      local files = FS:findFiles( dir, '*.dae', recursiveLevels, true, false)
      -- filter paths to only return filename without extension
@/lua/common/extensions/tech/techCapture.lua
  if dirname == nil then dirname = '/' end
  local files = FS:findFiles(dirname, baseFilename .. '*.' .. extension, 0, true, false)
  local filteredFiles = {}
@/lua/console/bananabench.lua
  local vehicles = {}
  for _, v in ipairs(FS:findFiles('/vehicles', '*', 0, false, true)) do
    if v ~= '/vehicles/common' then
@/lua/ge/extensions/career/modules/insurance/insurance.lua
  -- load insurance providers, and translate their names and descriptions
  local insuranceProvidersFileNames = FS:findFiles("gameplay/insurance/providers", "*.json", -1, true, false)
  for _, insuranceProviderFileName in ipairs(insuranceProvidersFileNames) do
  -- load insurance classes, and translate their names
  local classesFileNames = FS:findFiles("gameplay/insurance/classes", "*.json", -1, true, false)
  for _, className in ipairs(classesFileNames) do
@/lua/ge/extensions/core/vehicle/partmgmt.lua

  local files = FS:findFiles(playerVehicle.vehicleDirectory, "*.pc", -1, true, false) or {}
  local result = {}
@/gameplay/missionTypes/flowgraph/constructor.lua
  if not self.fgPath then
    local files = FS:findFiles(self.missionFolder, '*.flow.json', -1, true, false) or {}
    self.fgPath = files[1]
@/lua/ge/extensions/editor/missionEditor.lua
          if lastShownMission then
            for _, f in ipairs(FS:findFiles(lastShownMission.missionFolder, "*", -1, true, false)) do
              table.insert(files, f)
@/lua/ge/extensions/gameplay/missions/missionTypes/editorHelper.lua
      local fp, fn, ext = path.split(m.missionFolder .. file, true)
      local files = FS:findFiles(fp, fn, -1, true, false)
      foundFile = files[1]
        local fp, fn, ext = path.split(mission.missionFolder .. file, true)
        local files = FS:findFiles(fp, fn, -1, true, false)
        e.foundFile = files[1]
@/lua/ge/extensions/flowgraph/manager.lua
  local lookup = {}
  for i, filename in ipairs(FS:findFiles(macroPath, '*.json', -1, true, false)) do
    local dirname, fn, e = path.split(filename)
  local customNodePath = self.savedDir .. "customNodes/"
  for _, filename in ipairs(FS:findFiles(customNodePath, '*Node.lua', -1, true, false)) do
    local dirname, fn, e = path.split(filename)
@/lua/ge/extensions/trackbuilder/trackBuilder.lua
local function setupTextures()
  for _, file in pairs(FS:findFiles(materialSettings.directory, "*.dds", -1, true, false)) do
    local fileWithoutExtension = string.sub(file, 1, string.len(file) - 4)
@/lua/ge/extensions/flowgraph/nodes/gameplay/crawl/setupCrawl.lua
      -- Look for trail files in mission folder
      local trailFiles = FS:findFiles(missionFolder, '*.trail.json', -1, true, false) or {}
      if #trailFiles > 0 then
@/lua/ge/server/server.lua

  local foundfiles = FS:findFiles(levelDir, "*.cs\t*materials.json\t*data.json\t*datablocks.json", -1, true, false)
  table.sort(foundfiles)
@/lua/ge/extensions/gameplay/rally/tools/devTools.lua
function C:loadCompositors()
  local compositorFiles = FS:findFiles("/lua/ge/extensions/gameplay/rally/compositors/", "compositor.lua", -1, true, false)
  local compositors = {}
@/lua/ge/extensions/editor/flowgraph/examples.lua

    for i, filename in ipairs(FS:findFiles(stateTemplatePath, '*flow.json', -1, true, false)) do
@/lua/ge/extensions/editor/resourceChecker/resourceUtil.lua
local function collectFiles(root, pattern, skipCommon, vehAware)
  local files = FS:findFiles(root, pattern, -1, true, false)
  if skipCommon == false then
    if vehAware and string.match(root, "vehicles/") then
      join(files, FS:findFiles("/vehicles/common", pattern, -1, true, false))
    end
    -- some callers also add art/core (keep compatibility)
    join(files, FS:findFiles("/art", pattern, -1, true, false))
    join(files, FS:findFiles("/core", pattern, -1, true, false))
    join(files, FS:findFiles("/art", pattern, -1, true, false))
    join(files, FS:findFiles("/core", pattern, -1, true, false))
  end
    log('I', '', 'Verifying materials version' )
    local materialFiles = FS:findFiles(convertdata, "*.cs\t*materials.json", -1, true, false)
    job.progress = 5
    log('I', '', 'Verifying materials duplicates' )
    local materialFiles = FS:findFiles(convertdata, "*.cs\t*materials.json", -1, true, false)
    if skipCommon == false then
    if skipCommon == false then
      join(materialFiles, FS:findFiles("/vehicles/common", "*.cs\t*materials.json", -1, true, false))
      join(materialFiles, FS:findFiles("/art", "*.cs\t*materials.json", -1, true, false))
      join(materialFiles, FS:findFiles("/vehicles/common", "*.cs\t*materials.json", -1, true, false))
      join(materialFiles, FS:findFiles("/art", "*.cs\t*materials.json", -1, true, false))
      join(materialFiles, FS:findFiles("/core", "*.cs\t*materials.json", -1, true, false))
      join(materialFiles, FS:findFiles("/art", "*.cs\t*materials.json", -1, true, false))
      join(materialFiles, FS:findFiles("/core", "*.cs\t*materials.json", -1, true, false))
    end
    log('I', '', 'Checking texture maps' )
    local materialFiles = FS:findFiles(convertdata, "*.cs\t*materials.json", -1, true, false)
    job.progress = 10
    log('I', '', 'Checking texture maps' )
    local materialFiles = FS:findFiles(convertdata, "*.cs\t*materials.json", -1, true, false)
    local sorted = {}
    log('I', '', 'Checking material files' )
    local commonVeh = FS:findFiles("/vehicles/common", "*.cs\t*materials.json", -1, true, false)
    local commonArt = FS:findFiles("/art", "*.cs\t*materials.json", -1, true, false)
    local commonVeh = FS:findFiles("/vehicles/common", "*.cs\t*materials.json", -1, true, false)
    local commonArt = FS:findFiles("/art", "*.cs\t*materials.json", -1, true, false)
    local commonCore = FS:findFiles("/core", "*.cs\t*materials.json", -1, true, false)
    local commonArt = FS:findFiles("/art", "*.cs\t*materials.json", -1, true, false)
    local commonCore = FS:findFiles("/core", "*.cs\t*materials.json", -1, true, false)
    local materialFiles = FS:findFiles(convertdata, "*.cs\t*materials.json", -1, true, false)
    local commonCore = FS:findFiles("/core", "*.cs\t*materials.json", -1, true, false)
    local materialFiles = FS:findFiles(convertdata, "*.cs\t*materials.json", -1, true, false)
    join(materialFiles, commonVeh)
    log('I', '', 'Checking meshes for materials' )
    local meshFiles = FS:findFiles(convertdata, "*.dae\t*.dts\t*.cdae\t*.cached.dts", -1, true, false)
    for k,v in ipairs(meshFiles) do
    job.progress = 5
    local prefabs = FS:findFiles("/levels/"..levelname.."/", "*.prefab\t*.prefab.json", -1, true, false)
    local missionPrefabs = FS:findFiles("/gameplay/missions/"..levelname.."/", "*.prefab\t*.prefab.json", -1, true, false)
    local prefabs = FS:findFiles("/levels/"..levelname.."/", "*.prefab\t*.prefab.json", -1, true, false)
    local missionPrefabs = FS:findFiles("/gameplay/missions/"..levelname.."/", "*.prefab\t*.prefab.json", -1, true, false)
    join(prefabs, missionPrefabs)
    if removal == 1 then
      materialFiles = FS:findFiles("/levels/"..levelname.."/", "*materials.json", -1, true, false)
    else
    else
      materialFiles = FS:findFiles("/levels/"..levelname.."/", "*.cs\t*materials.json", -1, true, false)
    end
    job.progress = 5
    local prefabs = FS:findFiles("/levels/"..levelname.."/", "*.prefab\t*.prefab.json", -1, true, false)
    local missionPrefabs = FS:findFiles("/gameplay/missions/"..levelname.."/", "*.prefab\t*.prefab.json", -1, true, false)
    local prefabs = FS:findFiles("/levels/"..levelname.."/", "*.prefab\t*.prefab.json", -1, true, false)
    local missionPrefabs = FS:findFiles("/gameplay/missions/"..levelname.."/", "*.prefab\t*.prefab.json", -1, true, false)
    join(prefabs, missionPrefabs)
    local forestInternals = {}
    local forestFiles = FS:findFiles("/levels/"..levelname.."/forest/", "*forest4.json", -1, true, false)
    for _,v in pairs(forestFiles) do
    job.progress = 65
    local meshFiles = FS:findFiles("/levels/"..levelname.."/", "*.dae\t*.dts\t*.cdae", -1, true, false)
    for _,v in pairs(meshFiles) do
    job.sleep(0.001)
    local texFiles = FS:findFiles("/levels/"..levelname.."/", ".png\t*.dds", -1, true, false)
    local blacklist = {"buslines", "quickrace", "scenarios", "scenarios", "lights", "export", "import", "minimap"}
    local materialFiles = {}
    join(materialFiles, FS:findFiles("/levels", "*.cs\t*materials.json", -1, true, false))
    join(materialFiles, FS:findFiles("/vehicles", "*.cs\t*materials.json", -1, true, false))
    join(materialFiles, FS:findFiles("/levels", "*.cs\t*materials.json", -1, true, false))
    join(materialFiles, FS:findFiles("/vehicles", "*.cs\t*materials.json", -1, true, false))
    join(materialFiles, FS:findFiles("/art", "*.cs\t*materials.json", -1, true, false))
    join(materialFiles, FS:findFiles("/vehicles", "*.cs\t*materials.json", -1, true, false))
    join(materialFiles, FS:findFiles("/art", "*.cs\t*materials.json", -1, true, false))
    join(materialFiles, FS:findFiles("/core", "*.cs\t*materials.json", -1, true, false))
    join(materialFiles, FS:findFiles("/art", "*.cs\t*materials.json", -1, true, false))
    join(materialFiles, FS:findFiles("/core", "*.cs\t*materials.json", -1, true, false))
    matTable = parseMaterialFiles(materialFiles, job)
    log('I', '', 'Exporting textures to PNG' )
    local meshFiles = FS:findFiles(convertdata, "*.dds", -1, true, false)
    for _, v in ipairs(meshFiles) do

    local textures    = FS:findFiles(root, "*.dds\t*.png\t*.jpg\t*.jpeg\t*.tga\t*.bmp", -1, true, false)
    local meshesSrc   = FS:findFiles(root, "*.dae\t*.dts", -1, true, false)
    local textures    = FS:findFiles(root, "*.dds\t*.png\t*.jpg\t*.jpeg\t*.tga\t*.bmp", -1, true, false)
    local meshesSrc   = FS:findFiles(root, "*.dae\t*.dts", -1, true, false)
    local meshesCache = FS:findFiles(root, "*.cdae\t*.cached.dts", -1, true, false)
    local meshesSrc   = FS:findFiles(root, "*.dae\t*.dts", -1, true, false)
    local meshesCache = FS:findFiles(root, "*.cdae\t*.cached.dts", -1, true, false)
    local terrains    = FS:findFiles(root, "*.ter", -1, true, false)
    local meshesCache = FS:findFiles(root, "*.cdae\t*.cached.dts", -1, true, false)
    local terrains    = FS:findFiles(root, "*.ter", -1, true, false)
    local audio       = FS:findFiles(root, "*.bank\t*.ogg\t*.wav\t*.flac\t*.mp3", -1, true, false)
    local terrains    = FS:findFiles(root, "*.ter", -1, true, false)
    local audio       = FS:findFiles(root, "*.bank\t*.ogg\t*.wav\t*.flac\t*.mp3", -1, true, false)
    local datablocks  = FS:findFiles(root, "*.cs\t*.json\t*.jbeam", -1, true, false)
    local audio       = FS:findFiles(root, "*.bank\t*.ogg\t*.wav\t*.flac\t*.mp3", -1, true, false)
    local datablocks  = FS:findFiles(root, "*.cs\t*.json\t*.jbeam", -1, true, false)
    local allFiles    = FS:findFiles(root, "*", -1, true, false)
    local datablocks  = FS:findFiles(root, "*.cs\t*.json\t*.jbeam", -1, true, false)
    local allFiles    = FS:findFiles(root, "*", -1, true, false)
@/lua/ge/extensions/editor/layoutManager.lua
local function deleteWindowLayout(layoutPath)
  for _, path in ipairs(FS:findFiles(layoutPath, "*", -1, true, false)) do
    FS:removeFile(path)

  for _, path in ipairs(FS:findFiles(layoutDirectory, "*", 0, true, true)) do
    if not string.find(path, "/Default") then
@/gameplay/missionTypes/precisionParking/constructor.lua
  if not self.fgPath then
    local files = FS:findFiles(self.missionFolder, '*.flow.json', -1, true, false) or {}
    self.fgPath = files[1]
@/lua/ge/extensions/core/vehicle/manager.lua
  if materialsCache[path] then return end
  local files = FS:findFiles(path, '*materials.json\t*.cs', -1, true, false)
  for _, filename in ipairs(files) do
@/lua/ge/extensions/editor/perfProfiler.lua
      local camPathFolder = "levels/"..levelName.."/perfRecordingCampaths/"
      local camPathFiles = FS:findFiles(camPathFolder, "*.camPath.json", 0, true, true)
      if not next(camPathFiles) then
@/lua/ge/extensions/gameplay/missions/progress.lua
local function onExtensionLoaded()
  local files = FS:findFiles('/lua/ge/extensions/gameplay/missions/progress/conditions', '*.lua', -1)
  local count = 0
@/lua/ge/extensions/util/terrainGenerator.lua
  dir = dir or self.userDir
  for _, map in ipairs(FS:findFiles(dir, '*heightMap.png', -1, false, true)) do
    FS:removeFile(map)
  end
  for _, map in ipairs(FS:findFiles(dir, '*holeMap.png', -1, false, true)) do
    FS:removeFile(map)
  end
  for _, map in ipairs(FS:findFiles(dir, '*layerMap_*.png', -1, false, true)) do
    FS:removeFile(map)
  if FS:directoryExists(self.userDir) then
    local heightMapFiles = FS:findFiles(self.userDir, '*heightMap.png', -1, false, true)
    local holeMapFiles = FS:findFiles(self.userDir, '*holeMap.png', -1, false, true)
    local heightMapFiles = FS:findFiles(self.userDir, '*heightMap.png', -1, false, true)
    local holeMapFiles = FS:findFiles(self.userDir, '*holeMap.png', -1, false, true)
    if heightMapFiles[1] then
    end
    local materialFiles = FS:findFiles(self.userDir, '*materials.json', -1, false, true)
    if materialFiles[1] then

  for _, map in ipairs(FS:findFiles(self.userDir, '*_layerMap_*.png', -1, false, true)) do
    local matName = string.match(map, 'layerMap_%d*_(.*)%.(%w*)$')
@/ui/modules/scenariocontrol/scenariocontrol.js
              if (animation[index] !== undefined) {
                nextStart = findFiles(animation[index].comic || animation[index], animation[index].sound)
              } else {

      function findFiles (animationPath) {
        var deferred = $q.defer()
        if (animation[index] !== undefined) {
          findFiles(animation[index]).then((renderFunc) => {
            renderFunc()
@/lua/ge/extensions/core/modmanager.lua

  local files = FS:findFiles('/vehicles/', '*', 0, true, true)
  for _, path in ipairs(files) do
    if vehiculesTest and vehName~="" then
      local vfiles = FS:findFiles("/vehicles/"..vehName, "*", -1, true, false)

      local oldLvlFiles = FS:findFiles( "/"..filename..'levels/', "*.mis", 1, true, false )
      local lvlFiles = FS:findFiles( "/"..filename..'levels/', "*.level.json", 3, true, false )
      local oldLvlFiles = FS:findFiles( "/"..filename..'levels/', "*.mis", 1, true, false )
      local lvlFiles = FS:findFiles( "/"..filename..'levels/', "*.level.json", 3, true, false )
      local vehFiles = FS:findFiles( "/"..filename..'vehicles/', "*", 0, true, true )
      local lvlFiles = FS:findFiles( "/"..filename..'levels/', "*.level.json", 3, true, false )
      local vehFiles = FS:findFiles( "/"..filename..'vehicles/', "*", 0, true, true )
      if #oldLvlFiles > 0 or #lvlFiles > 0 then d.modType = 'terrain' end
    end
    local modFiles = FS:findFiles(filename, '*', -1, true, false)
    for i,e in ipairs(modFiles) do
  -- catch new files
  local zipfileList = FS:findFiles( "/mods/", "*.zip", -1, false, false )
  local unpackedList = FS:findFiles( "/mods/unpacked/", "*", 0, false, true )
  local zipfileList = FS:findFiles( "/mods/", "*.zip", -1, false, false )
  local unpackedList = FS:findFiles( "/mods/unpacked/", "*", 0, false, true )
  --if unpackedList[1] == 'mods/unpacked/' then unpackedList[1] = '' end --fix for previous FS

  local modScriptFiles = FS:findFiles('/scripts/', 'modScript.lua', -1, true, false)
  for k,v in ipairs(modScriptFiles) do

  modScriptFiles = FS:findFiles('/mods_data/', 'modScript.lua', 1, true, false)
  for k,v in ipairs(modScriptFiles) do
  -- delete old files in reverse order for empty folders before try to delete it
  -- local deleteFileList = FS:findFiles( folderPath, "*", -1, true, true )
  --dump(deleteFileList)
  print('testZips')
  local fileList = FS:findFiles( "/mods", "*.zip", -1, true, false )
  for k,v in pairs(fileList) do
  elseif mods[modname].unpackedPath then --unpacked, no fs notif because too slow to do findfiles on everything
    local modFiles = FS:findFiles(mods[modname].unpackedPath, '*', -1, true, false)
    for i,e in ipairs(modFiles) do
  elseif mods[modname].unpackedPath then --unpacked, no fs notif because too slow to do findfiles on everything
    local modScriptFiles = FS:findFiles(mods[modname].unpackedPath .. '/scripts/', 'modScript.lua', -1, true, false)
    modScripts = arrayConcat(modScripts,modScriptFiles)

    modScriptFiles = FS:findFiles(mods[modname].unpackedPath .. '/mods_data/', 'modScript.lua', 1, true, false)
    modScripts = arrayConcat(modScripts,modScriptFiles)

  local fileList = FS:findFiles( mods[modname].unpackedPath, "*", -1, false, false )
@/lua/ge/extensions/editor/vizHelper.lua
local function onExtensionLoaded()
  vizHelper = FS:findFiles(artPath, "*", -1, true, false)
  for k, v in ipairs(vizHelper) do
@/lua/ge/extensions/editor/dynamicDecals/debugSection.lua
  if im.Button(string.format("%s##%s", "Generate Materials", guiId)) then
    local vehicles = FS:findFiles('/vehicles/', '*', 0, false, true)
@/lua/console/json-performance.lua
-- finding files
local filenames = FS:findFiles('/vehicles', '*.jbeam', -1, false, false)
print(' * Finding all ' .. tostring(#filenames) .. ' json files took ' ..  string.format('%0.3f', hp:stopAndReset()) .. 's')
@/lua/ge/extensions/editor/crawlEditor.lua
    if FS:directoryExists(missionsPath) then
      local missionDirs = FS:findFiles(missionsPath, "*", 0, false, true)

  local missionDirs = FS:findFiles(missionsPath, "*", 0, false, true)
  for _, missionDir in ipairs(missionDirs) do
@/lua/ge/extensions/scenario/quickRaceLoader.lua
  end
  local files = FS:findFiles('/levels/', 'info.json', 1, true, false)
  -- filter paths to only return filename without extension
    local levelPath = '/levels/' .. levelName .. '/quickrace/'
    local quickraceFiles =  FS:findFiles(levelPath, '*.json', -1, true, false)
      local newLevel = {}
  else
    local tmp = FS:findFiles("/levels/"..levelName.."/",levelName..'_preview*.png', 0, true, false)
    for _, p in pairs(tmp) do
    end
    tmp = FS:findFiles("/levels/"..levelName.."/",levelName..'_preview*.jpg', 0, true, false)
    for _, p in pairs(tmp) do
  -- local previews = {}
  -- for i, file in ipairs(FS:findFiles('trackEditor/','*.json',-1,true,false)) do
  --   local _, fn, e = path.split(file)
  local editorTracks = {}
  for i, file in ipairs(FS:findFiles('trackEditor/','*.json',-1,true,false)) do
      local _, fn, e = path.split(file)
        -- find preview for forward and reverse
        local tmp = FS:findFiles(file.directory, file.trackName..'.jpg', 0, true, false)
        file.previews = {}

        local tmp = FS:findFiles(file.directory, file.trackName..'_reverse.jpg', 0, true, false)
        file.reversePreviews = {}
@/lua/ge/extensions/gameplay/traffic/trafficUtils.lua
  local dir = path.split(getMissionFilename()) or '/levels/'
  local files = FS:findFiles(dir, '*.vehGroup.json', 0, true, true) -- vehGroup files in the level directory
  if not files[1] or options.useCustom then
  if not files[1] or options.useCustom then
    files = FS:findFiles('/vehicleGroups/', '*.vehGroup.json', -1, true, true) -- vehGroup files in the vehicle groups directory
  end
@/lua/ge/extensions/core/paths.lua
  local camPathFolder = (path.split(getMissionFilename()) or '') .. "camPaths"
  local camPathFiles = FS:findFiles(camPathFolder, "*.camPath.json", 0, true, true)
@/lua/ge/extensions/util/photomode.lua
  local result = {}
  for i,file in ipairs(FS:findFiles('ui/modules/photomode/ui-overlays', '*.png', 0, false, false)) do
    table.insert(result, {filename=file})
@/lua/ge/extensions/career/modules/delivery/generator.lua
    local levelInfo = core_levels.getLevelByName(getCurrentLevelIdentifier())
    local files = FS:findFiles("gameplay/delivery/", '*.deliveryParcels.json', -1, false, true)
    for _,file in ipairs(files) do
    vehicleFilterTemplates = {}
    local files = FS:findFiles("gameplay/delivery/", '*.deliveryVehicles.json', -1, false, true)
    eligibleVehicles = util_configListGenerator.getEligibleVehicles(false, true)
    materialTemplates = {}
    local files = FS:findFiles("gameplay/delivery/", '*.deliveryMaterials.json', -1, false, true)
    for _,file in ipairs(files) do
@/lua/ge/extensions/gameplay/missions/proceduralMissionGenerators/busModeMissions.lua
    -- read all busline files for the route and navhelper data.
    local busLineFiles = FS:findFiles('/levels/'.. level.levelName .. '/buslines/', '*.buslines.json', -1, true, false)
    local routeData = {}
@/lua/ge/extensions/core/weather.lua
  -- global weather presets - all weather files saved in /art/weather/
  local globalFiles = FS:findFiles('art/weather/', '*.json', -1, true, false) -- {"art/weather/defaults.json"}
  for _, v in pairs(globalFiles) do
  local levelDir, filename, ext = path.split(levelPath)
  local levelFiles = FS:findFiles(levelDir..'/weather/', '*.json', -1, true, false) -- {"levels/driver_training/weather/weather.json"}
  for _, v in pairs(levelFiles) do
@/lua/ge/extensions/gameplay/rally/notebook/missionSettings.lua
  -- log('I', logTag, 'loading all notebook names from '..notebooksFullPath)
  local files = FS:findFiles(notebooksFullPath, '*.notebook.json', -1, true, false)
  for _,fname in pairs(files) do
@/lua/ge/extensions/freeroam/freeroamConfigurator.lua
M.dependencies = {}
local generatorFiles = FS:findFiles('lua/ge/extensions/freeroam/configuratorOptions/', '*.lua', 1, true, false)
for _, filePath in ipairs(generatorFiles) do
@/lua/ge/extensions/editor/flowgraph/properties.lua
          if relativeFiles == nil then
            relativeFiles = FS:findFiles(pin.node.mgr.savedDir, '*', -1, true, false)
          end
@/lua/ge/extensions/core/input/bindings.lua
    for _,prefix in ipairs(prefixes) do
      for _,path in ipairs(FS:findFiles(dir, prefix:lower().."*."..suffix, recursion, true, false)) do
        if tech_license.isAllowedInputmapPath(path) then
  -- get all subdirectories (recursive), plus the base directory itself
  local allEntries = FS:findFiles(baseDir, "*", -1, false, true) or {}
  table.insert(allEntries, 1, baseDir)
@/lua/ge/extensions/campaign/campaignsLoader.lua
  local campaigns = {}
  local files = FS:findFiles('/campaigns/', '*.json', 1, true, false)
  for k,filename in pairs(files) do
  local savesFiles = {}
  local files = FS:findFiles('/saves/campaigns/', '*.json', 1, true, false)
  --dump(files)
@/lua/ge/extensions/scenario/scenariosLoader.lua
    local cacheTable = {}
    local foundFiles = FS:findFiles(levelPath, "*.prefab\t*.prefab.json", -1, true, false)
    local dir
    if not scenarioData.previews then
      local tmp = FS:findFiles(scenarioData.directory.."/", scenarioData.scenarioName..'*.jpg', 0, true, false)
      local matchedScenarios = FS:findFiles(scenarioData.directory.."/", scenarioData.scenarioName..'*.json', 0, true, false)
      local tmp = FS:findFiles(scenarioData.directory.."/", scenarioData.scenarioName..'*.jpg', 0, true, false)
      local matchedScenarios = FS:findFiles(scenarioData.directory.."/", scenarioData.scenarioName..'*.json', 0, true, false)
      local otherScenarios = {}
  for _, path in ipairs(paths) do
    local subfiles = FS:findFiles(path, '*.json', -1, true, false)
    for _, scenarioFilename in ipairs(subfiles) do
  for _, p in ipairs(paths) do
    local fgFiles = FS:findFiles(p, '*.flow.json', -1, true, false)
    for _, fgPath in ipairs(fgFiles) do
  else
    local tmp = FS:findFiles("/levels/"..levelName.."/",levelName..'_preview*.png', 0, true, false)
    for _, p in pairs(tmp) do
    end
    tmp = FS:findFiles("/levels/"..levelName.."/",levelName..'_preview*.jpg', 0, true, false)
    for _, p in pairs(tmp) do
    local path = '/levels/' .. levelName .. '/scenarios/' .. subdirectory
    local foundFiles =  FS:findFiles(path, '*.json', -1, true, false)
      -- hardcoded for now...
      local busLineFiles = FS:findFiles('/levels/'.. levelName .. '/buslines/', '*.buslines.json', -1, true, false)
      local routes = {}
@/lua/ge/extensions/editor/crawlEditor/trails.lua
    local crawlsPath = '/levels/' .. currentLevel .. '/crawls/'
    local crawlsFiles = FS:findFiles(crawlsPath, "*.prefab.json", 1, false, true)
    for _, file in ipairs(crawlsFiles) do
@/lua/ge/extensions/gameplay/speedTrapLeaderboards.lua
  table.clear(leaderboards)
  local files = FS:findFiles(folderPath, '*.json', 0, false, false)
  for _, filePath in pairs(files) do
@/lua/ge/extensions/editor/gen/exp_meshexplorer.lua

    local matFiles = FS:findFiles('/art/shapes/', '*'..'materials.json', -1, true, false)
    for k,f in pairs(matFiles) do
	pref = pref or '*'
	local matFiles = FS:findFiles(path, pref..'mat.json', -1, true, false)
		lo('>> exp_materialLoad:'..path..':'..#matFiles)
--        dump(out, '?? dir2list:')
    local list = FS:findFiles(path..'/', '*.dae', 0, false, false)
--        lo('?? f_list:'..#list)
@/lua/ge/extensions/editor/scriptAIManager.lua
      if im.BeginPopupModal('Load Recording##'..vehId, nil, im.WindowFlags_AlwaysAutoResize) then
        local files = FS:findFiles(trackFilePath, '*' .. trackFileExt, -1, true, false)
        for _, filename in pairs(files) do
@/lua/ge/extensions/util/resaveMaterials.lua
  -- for now we only convert materials.cs
  local files = FS:findFiles('/', 'materials.cs\tmanaged*Data.csNOP', -1, true, false)
  for _, fn in ipairs(files) do
@/lua/ge/extensions/core/levels.lua
  local res = {}
  local level_dirs = FS:findFiles('/levels/', '*', 0, false, true)
  table.sort(level_dirs, function(a,b) return string.lower(a) < string.lower(b) end )
      -- look for any mission files in there and use the first
      local files = FS:findFiles(d, '*.mis', 1, true, false)
      if #files ~= 0 then
@/lua/ge/extensions/editor/roadUtils.lua
  if not editor.getLevelName() then return end
  roadTemplateFiles = FS:findFiles("levels/" .. editor.getLevelName() .. "/roadtemplates","*.road.json", 0, true, true)
@/lua/vehicle/powertrain.lua
    local vehicleDirectory = vehiclePath .. "lua/powertrain"
    local globalFiles = FS:findFiles(globalDirectory, "*.lua", -1, true, false)
    local vehicleFiles = FS:findFiles(vehicleDirectory, "*.lua", -1, true, false)
    local globalFiles = FS:findFiles(globalDirectory, "*.lua", -1, true, false)
    local vehicleFiles = FS:findFiles(vehicleDirectory, "*.lua", -1, true, false)
    local files = arrayConcat(globalFiles, vehicleFiles)
@/lua/ge/extensions/editor/missionEditor/conditions.lua
  missionConditions = {}
  local files = FS:findFiles('/lua/ge/extensions/gameplay/missions/unlocks/conditions/','*.lua', -1)
  for _, file in ipairs(files) do
@/lua/vehicle/protocols.lua
  local anyProtocolActive = false
  filesCache = filesCache or FS:findFiles(protocolsDir, "*.lua", 0, false, false) -- optimization, do not hit FS for new files (until you ctrl-R)
  for _,filepath in ipairs(filesCache) do
@/lua/ge/extensions/ui/liveryEditor/userData.lua
  local queriedFiles = {}
  local files = FS:findFiles(saveDir, '*' .. dynDecalsExtension, -1, false, false)
  for i, file in ipairs(files) do
@/lua/ge/extensions/flowgraph/modules/missionReplayModule.lua
  local result = {}
  for i, file in ipairs(FS:findFiles(dir, '*.rpl', 0, false, false)) do
    table.insert(orderedReplays, {date = FS:stat(file).createtime, file = file})
@/lua/vehicle/sounds.lua
  --log('D', "sounds.loadSoundFiles", "loading sound files from: "..directory)
  local files = FS:findFiles(directory, "*.sbeam", -1, true, false)
  if not files or #files == 0 then
@/lua/ge/extensions/editor/terrainMaterialsEditor.lua

        local filePaths = FS:findFiles(data.path, "*", 0, true, false)
        local files = {}
@/lua/ge/client/core.lua
  -- then the new ones
  local subfiles = FS:findFiles("core/", '*.materials.json', -1, true, false)
  -- log('I','core', 'loadCoreMaterials json materials  = '..dumps(subfiles))
@/lua/vehicle/energyStorage.lua
    local directory = "lua/vehicle/energyStorage"
    local files = FS:findFiles(directory, "*.lua", -1, true, false)
    if files then
@/lua/ge/extensions/editor/multiSpawnManager.lua
  for _, v in ipairs(M.filePaths) do
    local files = FS:findFiles(v, "*.vehGroup.json", -1, true, true)
    table.sort(files)
@/lua/ge/extensions/gameplay/missions/unlocks.lua
local function onExtensionLoaded()
  local files = FS:findFiles('/lua/ge/extensions/gameplay/missions/unlocks/conditions','*.lua',-1)
  local count = 0
@/lua/ge/extensions/gameplay/drag/saveSystem.lua
      -- Try to find facility file
      local facilityFiles = FS:findFiles(levelPath, "*.facility.json", -1, true, false)
      for _, file in ipairs(facilityFiles) do
  if levelPath then
    local facilityFiles = FS:findFiles(levelPath, "*.facility.json", -1, true, false)
    for _, file in ipairs(facilityFiles) do
  if levelPath then
    local stripFiles = FS:findFiles(levelPath, "*.strip.json", -1, true, false)
    for _, file in ipairs(stripFiles) do
@/lua/ge/extensions/util/jbeamStats.lua

  local jbeamFiles = FS:findFiles('/', '*.jbeam', -1, true, false)
  res.totalJbeamFiles = #jbeamFiles
@/lua/ge/extensions/telemetry/core.lua
  -- Auto-discover trackers from trackers subfolder
  local trackerFiles = FS:findFiles('lua/ge/extensions/telemetry/trackers/', '*.lua', 1, true, false)
  local trackersToLoad = {}
@/lua/ge/extensions/editor/gen/test.lua
	local pth = U.path2disk({editor.getLevelPath(), 'bat', 'test'})
	local list = FS:findFiles(pth, '*.dae', -1, true, false)
--		lo('??^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ onVal_gen_unique:'..tostring(pth)..':'..tableSize(amesh))
	-- JSON
	list = FS:findFiles(pth, '*.json', -1, true, false)
	for i,s in pairs(list) do
	pth = U.path2disk({editor.getLevelPath(), 'forest'})
	list = FS:findFiles(pth, '*.json', -1, true, false)
--		lo('?? onVal_gen_unique:'..tostring(pth)..':'..tableSize(amesh))
			local pref = '*'
			local matFiles = FS:findFiles('/art/shapes/objects/', pref..'materials.json', -1, true, false)
			for _,f in pairs(afile) do
@/lua/ge/extensions/ui/uiMods.lua
  local modDir = "/ui/ui-vue/mods"
  local files = FS:findFiles(modDir, "*.*", -1, true, false)
  local mods = {}
@/lua/ge/extensions/editor/dynamicDecals/fonts.lua
local function updateGeneratedFontAtlases()
  local files = FS:findFiles(destinationDirectory, '*' .. fontAtlasJsonExtension, 1, true, false)
  table.sort(files, function(a, b) return string.lower(a) < string.lower(b) end)
@/lua/ge/extensions/editor/fileDialog.lua
  -- get entries for current path
  local files = FS:findFiles(localcachepath, '*', 0, false, true) -- TODO : feature #4209
  local pattern = nil
@/lua/ge/extensions/gameplay/drag/general.lua
    local levelDir = core_levels.getLevelByName(levelIdentifier).dir
    local settingsFiles = FS:findFiles(levelDir.."/dragstrips/", "*.dragSettings.json", -1, true, false)
@/lua/ge/extensions/editor/rallyEditor.lua
  log('I', logTag, 'loading all notebook names from '..notebooksFullPath)
  local files = FS:findFiles(notebooksFullPath, '*.notebook.json', -1, true, false)
  for _,fname in pairs(files) do
@/lua/ge/extensions/career/branches.lua
    local allBranches = {}
    for _, filePath in ipairs(FS:findFiles(branchesDir, 'info.json', -1, false, true)) do
      local fileInfo = jsonReadFile(filePath)
@/lua/ge/ge_utils.lua
function dirContent(path)
  return FS:findFiles(path, '*', -1, false, false)
end
function getDirs(path, recursiveLevels)
  local files = FS:findFiles(path, '*', recursiveLevels, false, true)
  local res = {}
function getDirectories(path)
  local files = FS:findFiles(path,"*", 0, true, true)
  local dirs = {}
  -- please support development of BeamNG and leave this in here :)
  local files = FS:findFiles('/', '*.url', 0, false, false)
  local knownHashes = {
@/lua/ge/extensions/util/trackBuilder/splineTrack.lua
  local previews = {}
  for i, file in ipairs(FS:findFiles('trackEditor/', '*.json', -1, true, false)) do
    local _, fn, e = path.split(file)
  local previews = {}
  for i, file in ipairs(FS:findFiles('trackEditor/', '*.png', -1, true, false)) do
    local _, fn, e = path.split(file)
  end
  for i, file in ipairs(FS:findFiles('trackEditor/', '*.jpg', -1, true, false)) do
    local _, fn, e = path.split(file)
@/lua/ge/extensions/freeroam/facilities.lua
      -- parse any other facility files inside the levels /facilities folder
      for _,file in ipairs(FS:findFiles(levelInfo.dir.."/facilities/", '*.facilities.json', -1, false, true)) do
        parseFacilitiyFile(file, facilitiesByLevel[levelName], levelInfo.misFilePath)
@/lua/ge/extensions/util/inputSystemUtils.lua
  local usedActions = {}
  for _, path in ipairs(FS:findFiles('/', '*.json', -1, false, false)) do
    if path:find('inputmaps/') then
local function resave()
  for _, filepath in ipairs(FS:findFiles('/', '*.json', -1, false, false)) do
    if filepath:find('inputmaps/') then
@/lua/ge/extensions/editor/tech/roadArchitect/staticMeshMgr.lua
  for j = 1, #staticMeshPaths do
    local meshPaths = FS:findFiles(staticMeshPaths[j], "*.dae", -1, true, false)
    for i = 1, #meshPaths do
@/lua/ge/extensions/util/worker.lua
  -- old material.cs support
  local matFiles = FS:findFiles( path, 'materials.cs', -1, true, false)
  for k,v in pairs(matFiles) do
  end
  local matFiles = FS:findFiles( path, '*materials.json', -1, true, false)
  for k,v in pairs(matFiles) do
@/lua/ge/extensions/editor/assetDeduplicator.lua
      cacheData['assets'] = {}
      local filenames = FS:findFiles("/assets/", "*.jpg\t*.png\t*.dds\t*.dae\t*.cdae\t*.glb\t*.gltf", -1, true, false)
      job.allfiles = job.allfiles + #filenames
      cacheData['art'] = {}
      local filenames = FS:findFiles("/art/", "*.jpg\t*.png\t*.dds\t*.dae\t*.cdae\t*.glb\t*.gltf", -1, true, false)
      job.allfiles = job.allfiles + #filenames
      local stockLevels = {}
      local filenames = FS:findFiles("/levels/", "info.json", 1, true, false)
      for _, filename in ipairs(filenames) do
      for path, _ in pairs(stockLevels) do
        local filenames = FS:findFiles(path, "*.jpg\t*.png\t*.dds\t*.dae\t*.cdae\t*.glb\t*.gltf", -1, true, false)
        job.allfiles = job.allfiles + #filenames
      local modLevels = {}
      local filenames = FS:findFiles("/levels/", "info.json", 1, true, false)
      for _, filename in ipairs(filenames) do
      for path, _ in pairs(modLevels) do
        local filenames = FS:findFiles(path, "*.jpg\t*.png\t*.dds\t*.dae\t*.cdae\t*.glb\t*.gltf", -1, true, false)
        job.allfiles = job.allfiles + #filenames
      cacheData['currentLevel'][currentLevelId] = {}
      local filenames = FS:findFiles("/levels/"..currentLevelId.."/", "*.jpg\t*.png\t*.dds\t*.dae\t*.cdae\t*.glb\t*.gltf", -1, true, false)
      job.allfiles = job.allfiles + #filenames
@/lua/ge/extensions/editor/api/core.lua
local function copyDirectory(srcPath, dstPath)
  local filesAndFolders = FS:findFiles(srcPath, "*.*", -1, true, true)
  if srcPath == "" or not srcPath then srcPath = "levels/template/" end
  local filesAndFolders = FS:findFiles(srcPath, "*.*", -1, true, true)
  local srcLevelName = srcPath:gsub("levels/", "")
@/lua/common/utils.lua
  local ret = {}
  for _, lvlPath in ipairs(FS:findFiles('/levels/', '*', 0, false, true)) do
    table.insert(ret, string.lower(lvlPath:sub(9)))
@/lua/ge/extensions/editor/vehicleEditor/staticEditor/veJBeamVariablesChecker.lua
local function analyze()
  local dirPaths = FS:findFiles('vehicles', "*", 0, false, true)
  for _, vehDir in ipairs(dirPaths) do
    local pcFilePaths = FS:findFiles(vehDir, "*.pc", -1, false, false)
    local jbeamFilePaths = FS:findFiles(vehDir, "*.jbeam", -1, false, false)
    local pcFilePaths = FS:findFiles(vehDir, "*.pc", -1, false, false)
    local jbeamFilePaths = FS:findFiles(vehDir, "*.jbeam", -1, false, false)
@/lua/ge/extensions/editor/veMain.lua
  local extNames = {}
  local luaFiles = FS:findFiles("/lua/ge/extensions/editor/vehicleEditor/", "ve*.lua", 0, false, false)
  local staticExtNames = {}
  local staticLuaFiles = FS:findFiles("/lua/ge/extensions/editor/vehicleEditor/staticEditor/", "ve*.lua", 0, false, false)
  local liveExtNames = {}
  local liveLuaFiles = FS:findFiles("/lua/ge/extensions/editor/vehicleEditor/liveEditor/", "ve*.lua", 0, false, false)
@/lua/ge/extensions/core/flowgraphManager.lua
  end)
  --for _, simpleNodeConstructor in ipairs(FS:findFiles(simpleNodeConstructorPath,"*.json")) do
  --  require(simpleNodeConstructor)
    local lookup = {}
    for i, filename in ipairs(FS:findFiles(nodePath, '*.lua', -1, true, false)) do
      local dirname, fn, e = path.split(filename)
    local lookup = {}
    for i, filename in ipairs(FS:findFiles(stateTemplatePath, '*state.flow.json', -1, true, false)) do
      local dirname, fn, e = path.splitWithoutExt(filename, true)
@/lua/ge/extensions/core/input/actions.lua
  local result = {}
  for _,path in pairs(FS:findFiles(directory, pattern, 0, false, false)) do
    if active == tech_license.isAllowedActionsPath(path) then