Fastest recursive search for files

61 次查看(过去 30 天)
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.

采纳的回答

Adam Danz
Adam Danz 2024-1-28
编辑:Adam Danz 2024-1-28
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...
  • ...open 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
set /a RESULT=!FILE_COUNT! %% !MODULUS!
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**********
echo PROCESS COMPLETE >> "%OUTPUT_FILE%"
endlocal

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 File Operations 的更多信息

标签

Community Treasure Hunt

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

Start Hunting!

Translated by