1. ホーム
  2. matlab

[解決済み] MATLABで特定のディレクトリの下にあるすべてのファイルを取得する方法は?

2022-12-11 19:55:29

質問

の下にあるすべてのファイルを取得する必要があります。 D:\dic の下にあるすべてのファイルを取得し、さらに個別に処理するためにそれらをループする必要があります。

MATLABはこのような操作に対応しているのでしょうか?

PHPやPythonなど、他のスクリプトでも可能です。

どのように解決するのですか?

更新しました。 この投稿はかなり古く、その間に私自身の使用のためにこのユーティリティをたくさん修正したので、私は新しいバージョンを投稿すべきだと思いました。私の最新のコードは以下で見つけることができます。 MathWorks ファイル交換 : dirPlus.m . また、ソースは GitHub .

いくつかの改良をしました。フルパスを先頭に付けるか、ファイル名だけを返すかのオプションを提供するようになりました。 Doresoom オズ・ラジアーノ から取り込んだ)ファイル名に正規表現パターンを適用します。 ピーター D ). さらに、各ファイルに検証機能を適用して、ファイル名以外の条件 (ファイル サイズ、コンテンツ、作成日など) に基づいて選択できるようにしました。


注意 MATLABの新しいバージョン(R2016b以降)では dir 関数には再帰的な検索機能があります! ですから、このようにすれば、すべての *.m ファイルのリストを得ることができます。

dirData = dir('**/*.m');


古いコードです。(後世のために)

これは、与えられたディレクトリのすべてのサブディレクトリを再帰的に検索し、見つかったすべてのファイル名のリストを収集する関数です。

function fileList = getAllFiles(dirName)

  dirData = dir(dirName);      %# Get the data for the current directory
  dirIndex = [dirData.isdir];  %# Find the index for directories
  fileList = {dirData(~dirIndex).name}';  %'# Get a list of the files
  if ~isempty(fileList)
    fileList = cellfun(@(x) fullfile(dirName,x),...  %# Prepend path to files
                       fileList,'UniformOutput',false);
  end
  subDirs = {dirData(dirIndex).name};  %# Get a list of the subdirectories
  validIndex = ~ismember(subDirs,{'.','..'});  %# Find index of subdirectories
                                               %#   that are not '.' or '..'
  for iDir = find(validIndex)                  %# Loop over valid subdirectories
    nextDir = fullfile(dirName,subDirs{iDir});    %# Get the subdirectory path
    fileList = [fileList; getAllFiles(nextDir)];  %# Recursively call getAllFiles
  end

end

上記の関数をMATLABのパスのどこかに保存した後、以下の方法で呼び出すことができます。

fileList = getAllFiles('D:\dic');