Sie können dies in MATLAB leicht zu tun, eine Kombination aus dir
mit einem Verzeichnisliste zu bekommen, fullfile
Pfade zu konstruieren, movefile
die Dateien auf ihren neuen Platz zu bewegen.
Zuerst das folgende Skript auf einem Kopie Ihrer Daten im Fall führen Sie es irgendwelche Probleme hat
function flattenFolder(folder, destination)
if ~exist('destination', 'var')
destination = folder;
end
%// Get a list of everything in this folder
D = dir(folder);
%// Grab just the directories and remove '.' and '..'
folders = {D([D.isdir]).name};
folders = folders(~ismember(folders, {'.', '..'}));
%// Get all the files
files = {D(~[D.isdir]).name};
%// Remove .DS_store files
files = files(~strcmpi(files, '.DS_store'));
%// For every subfolder, call this function recursively
for k = 1:numel(folders)
flattenFolder(fullfile(folder, folders{k}), destination);
end
%// If the source and destination are the same, don't worry about moving the files
if strcmp(folder, destination)
return
end
%// Move all of the files to the destination directory
for k = 1:numel(files)
destfile = fullfile(destination, files{k});
%// Append '_duplicate' to the filename until the file doesn't exist
while exist(destfile, 'file')
[~, fname, ext] = fileparts(destfile);
destfile = fullfile(destination, sprintf('%s_duplicate%s', fname, ext));
end
movefile(fullfile(folder, files{k}), destfile);
end
end
Dann mit Ihrem Beispiel Sie dies als nennen würde:
flattenFolder('Main_Folder')
Hinweis
Wie andere hav Wie gesagt, MATLAB ist nicht das ideale Werkzeug für diese Aufgabe. Da Sie OS X verwenden, ist die Verwendung von bash über die Befehlszeile möglicherweise eine bessere Option.
find Main_Folder/ -mindepth 2 -type f -exec mv -i '{}' Main_Folder/ ';'
Was ist Ihre Umgebung? Windows? Mac? Linux? Für Mac/Linux würde ich das mit einem Bash-Shell-Skript machen. Das ist nicht wirklich was Matlab für ... –
Es gibt buchstäblich Tausende von Möglichkeiten, dies mit verschiedenen Tools zu tun ... – Matt
ok, können Sie mir bitte eine Methode sagen? Kennst du keine Matlab-Methode dafür? Vielen Dank – David