/ / Loop за изтриване на специфични файлове в Matlab - matlab

За да изтриете специфични файлове в Matlab - matlab

Имам безброй папки, от които трябва да вляза иизтрийте първите 6 файла в него. Понастоящем имам код, който да отида в папката и да изтривам всеки файл едно по едно. Не мога да разбера как да създадете линия за опростяване на този код.

FN_NIFTI = "C: path";
funcdir = "C: path"/folder";
FNruns = {"Folder 1", "Folder 2", "Folder 3", etc..};

for i=1:length(FNruns)
delete(fullfile(FN_NIFTI,funcdir,FNruns{i},"*001.nii"))
delete(fullfile(FN_NIFTI,funcdir,FNruns{i},"*002.nii"))
delete(fullfile(FN_NIFTI,funcdir,FNruns{i},"*003.nii"))
delete(fullfile(FN_NIFTI,funcdir,FNruns{i},"*004.nii"))
delete(fullfile(FN_NIFTI,funcdir,FNruns{i},"*005.nii"))
delete(fullfile(FN_NIFTI,funcdir,FNruns{i},"*006.nii"))
end

Имайте предвид, че гореспоменатият код е копиран / вмъкнат няколко пъти. Например имам друг код под него, като например:

ASL_NIFTI = "C: path";
funcdir = "C: path"/folder";
ASLruns = {"Folder 1", "Folder 2", "Folder 3", etc..};

for i=1:length(NWruns)
delete(fullfile(ASL_NIFTI ,funcdir,ASLruns {i},"*001.nii"))
delete(fullfile(ASL_NIFTI ,funcdir,ASLruns {i},"*002.nii"))
delete(fullfile(ASL_NIFTI ,funcdir,ASLruns {i},"*003.nii"))
delete(fullfile(ASL_NIFTI ,funcdir,ASLruns {i},"*004.nii"))
delete(fullfile(ASL_NIFTI ,funcdir,ASLruns {i},"*005.nii"))
delete(fullfile(ASL_NIFTI ,funcdir,ASLruns {i},"*006.nii"))
end

Оценявам помощта! (с обяснение за начинаещи моля)

Благодаря

Отговори:

0 за отговор № 1

Можете да започнете с подобряването на lo за малко.

for i = 1:length(targetFolder)
for fileNr = 1:6
delete(fullfile(targetFolder{i}, sprintf("*00%d.nii", fileNr)));
end
end

Променливата targetFolder трябва да съдържат всички папки, в които искате да изтриете файловете. Ако тези папки са избрани по специален начин, можете просто да ги подредите:

targetFolder = { ...
fullfile(FNrunsRootDir, FolderA), ...
fullfile(FNrunsRootDir, FolderC), ...
...
fullfile(ALSrunsRootDir, FolderX), ...
fullfile(ALSrunsRootDir, FolderY), ...
...
};

ако всичко подпапките във всяка коренна папка трябва да бъдат подбрани, които бихте могли да използвате dir за да ги получи

rootDirs = {FNrunsRootDir, ALSrunsRootDir, ...}

for iDir = 1:length(rootDirs)
subDirs = dir(rootDirs{iDir});
% Pick out all valid sub folders
subDir = setdiff({subDir([subDir.isdir]).name}, {".",".."});
% Combine into full folder paths
targetFolder = strcat(rootDirs{i}, filesep, subDir);

%%%% FOR LOOP FROM ABOVE GOES HERE %%%%

end