Filter löschen
Filter löschen

Fastest recursive search for files

42 Ansichten (letzte 30 Tage)
KAE am 10 Jul. 2020
Kommentiert: KAE am 31 Jan. 2024
From this answer, I learned that dir can search recursively for files in subdirectories, and it is about 3X faster than what I had been using earlier, getfilenames. However now I am searching a remote directory containing many subdirectories with thousands of files, and the dir command takes 30+ minutes to execute. Is there a faster way? I am happy to call something outside of Matlab, like find in the accepted answer here.

Akzeptierte Antwort

Adam Danz
Adam Danz am 28 Jan. 2024
Bearbeitet: Adam Danz am 28 Jan. 2024
Here's an Easter egg. I rarely answer non-MATLAB questions here but since I had to solve this today, I thought I'd share.
This batch file finds all .fig files in a directory and its subfolders (recursive search). Instructions:
  1. Create a new file with the .cmd or .bat extension.
  2. Copy-paste the script below into the file, adjusting the variables as needed.
  3. Update this line to specify the search directory: set "SEARCH_DIR=\\abc\def\"
  4. Update this line to specify the output file name, saved to the same directory as the cmd file: set "OUTPUT_FILE=FigFilesList.txt"
  5. Update the search term: (*.fig)
  6. Double-click on the file to execute the batch script.
Upon execution, the script will...
  • the terminal command window
  • Search through the specified directory and its subdirectories for files with the .fig extension.
  • Output the paths of these files to a text file named FigFilesList.txt.
  • Every 200 fig files found, a message will be displayed in the terminal to indicate progress.
  • A message will appear at the end to indicate that the seaerch is complete.
@echo off
setlocal EnableDelayedExpansion
set "SEARCH_DIR=\\abc\def\"
set "OUTPUT_FILE=FigFilesList.txt"
echo Listing all .fig files in %SEARCH_DIR% and subfolders:
echo File list generated on %DATE% at %TIME% > "%OUTPUT_FILE%"
set /a FILE_COUNT=0
set /a MODULUS=200
for /R "%SEARCH_DIR%" %%i in (*.fig) do (
echo %%i >> "%OUTPUT_FILE%"
set /a FILE_COUNT+=1
if !RESULT! equ 0 (
echo Number of .fig files found so far: !FILE_COUNT!
echo List of .fig files saved to %OUTPUT_FILE%
echo **********Search complete**********

Weitere Antworten (0)


Mehr zu File Operations finden Sie in Help Center und File Exchange


Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by