How can I remove . and ..

조회 수: 2 (최근 30일)
sun rise
sun rise 2021년 5월 28일
댓글: sun rise 2021년 5월 31일
clear all
clc
sad = dir('D:\Project\DB1\test\'); % Returns both folders and files
% sad = dir(pwd); % Returns both folders and files
cell_array_of_folder_names = {sad([sad.isdir]).name}; % Select folder names
% cell_array_of_folder_names( strncmp( cell_array_of_folder_names, ".", 1 ) ) = []; % Remove '.' and '..'
sorted_cell_array_of_folder_names = sort_nat( cell_array_of_folder_names );
% sorted_cell_array_of_folder_names = cell_array_of_folder_names; % if you don't have sort_nat
whos sorted_cell_array_of_folder_names
%----------------
[mp1, np] = size(sorted_cell_array_of_folder_names); % compute size = number of subfolders & files & . & ..
csf1=0; % counter of JUST subfolders found in PF
t=1;
Group_Test1 = zeros(1, mp1);
for i=1:mp1
% Skip . and ..
if endsWith(sorted_cell_array_of_folder_names{i}, '.') || endsWith(sorted_cell_array_of_folder_names{i}, '..')
% Skip . and ..
continue; % Skip to bottom of loop.
end
% Keep only folders:
csf1 = csf1 +1; % one sub folder found
SFN = sorted_cell_array_of_folder_names(i).name ;% extract his name
tifList = ls(sprintf('%s%s%s%s',PF,SFN,'\','*.tif')); % list all jpg files
[ms1, ns] = size(tifList); % ms = number of image files found
% Processing for each tif file:
for j=1:ms1
tifFileName = tifList(j,:); % extract name of tif file
% IM=imread([PF SFN '\' tifFileName]);
%t=1;
%for i=1:csf1
% for j=1:ms1
Group_Test1(t)={i};
t=t+1;
end
PF_SFN_imgName = sprintf('%s%s%s',PF,SFN,'\',tifFileName);
end
Group_Test1 = Group_Test1(1:t-1); % Crop off any unused elements
save('Group_Test','Group_Test1');
%----------------------
  댓글 수: 1
Stephen23
Stephen23 2021년 5월 28일
Tip: use FULLFILE to join strings into one filepath, rather than SPRINTF or string concatenation.

댓글을 달려면 로그인하십시오.

채택된 답변

Stephen23
Stephen23 2021년 5월 28일
Replace
{sad([sad.isdir]).name}
with
setdiff({sad([sad.isdir]).name},{'..','.'})
  댓글 수: 17
Walter Roberson
Walter Roberson 2021년 5월 28일
if ispc()
PF = fullfile('D:\Project\DB1\test\', '*', '*.tif');
else
%for demonstration purposes ONLY.
%MATLAB Answers does not have nat_sort installed, so install it
td = tempname;
mkdir(td);
tz = [td '.zip'];
urlwrite('https://www.mathworks.com/matlabcentral/mlc-downloads/downloads/submissions/10959/versions/4/download/zip/sort_nat.zip', tz);
unzip(tz, td)
addpath(td)
%now point us to a directory we know that some tif files are in
PF = fullfile( fileparts(fileparts(which('cameraman.tif'))), '**', '*.tif');
end
sad = dir(PF); % Returns files only
cell_array_of_file_names = fullfile({sad.folder}, {sad.name});
[folders, basenames, ext] = fileparts(cell_array_of_file_names);
G = findgroups(folders);
[~, labels, ~] = fileparts(folders);
Groups = struct();
maxG = max(G);
for fidx = 1 : maxG
matches = find(G == fidx);
these_entries = cell_array_of_file_names(matches);
these_entries = sort_nat( these_entries );
this_label = labels{matches(1)};
%these_entries is a cell array containing only file names
%that are all part of the same folder, and the folder name
%is in this_label
Groups.(this_label) = these_entries;
end
Groups
Groups = struct with fields:
imdata: {1×33 cell}
Groups.(this_label).'
ans = 33×1 cell array
{'/MATLAB/toolbox/images/imdata/AT3_1m4_01.tif'} {'/MATLAB/toolbox/images/imdata/AT3_1m4_02.tif'} {'/MATLAB/toolbox/images/imdata/AT3_1m4_03.tif'} {'/MATLAB/toolbox/images/imdata/AT3_1m4_04.tif'} {'/MATLAB/toolbox/images/imdata/AT3_1m4_05.tif'} {'/MATLAB/toolbox/images/imdata/AT3_1m4_06.tif'} {'/MATLAB/toolbox/images/imdata/AT3_1m4_07.tif'} {'/MATLAB/toolbox/images/imdata/AT3_1m4_08.tif'} {'/MATLAB/toolbox/images/imdata/AT3_1m4_09.tif'} {'/MATLAB/toolbox/images/imdata/AT3_1m4_10.tif'} {'/MATLAB/toolbox/images/imdata/autumn.tif' } {'/MATLAB/toolbox/images/imdata/board.tif' } {'/MATLAB/toolbox/images/imdata/cameraman.tif' } {'/MATLAB/toolbox/images/imdata/canoe.tif' } {'/MATLAB/toolbox/images/imdata/cell.tif' } {'/MATLAB/toolbox/images/imdata/circbw.tif' } {'/MATLAB/toolbox/images/imdata/circuit.tif' } {'/MATLAB/toolbox/images/imdata/eight.tif' } {'/MATLAB/toolbox/images/imdata/forest.tif' } {'/MATLAB/toolbox/images/imdata/hotcoffee.tif' } {'/MATLAB/toolbox/images/imdata/kids.tif' } {'/MATLAB/toolbox/images/imdata/logo.tif' } {'/MATLAB/toolbox/images/imdata/m83.tif' } {'/MATLAB/toolbox/images/imdata/mandi.tif' } {'/MATLAB/toolbox/images/imdata/moon.tif' } {'/MATLAB/toolbox/images/imdata/mri.tif' } {'/MATLAB/toolbox/images/imdata/paper1.tif' } {'/MATLAB/toolbox/images/imdata/pout.tif' } {'/MATLAB/toolbox/images/imdata/shadow.tif' } {'/MATLAB/toolbox/images/imdata/spine.tif' }
sun rise
sun rise 2021년 5월 31일
>> Untitled3
Error using fileparts (line 37)
Input must be a row vector of characters or string scalar.
Error in Untitled3 (line 21)
[folders, basenames, ext] = fileparts(cell_array_of_file_names);
>>

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Descriptive Statistics에 대해 자세히 알아보기

제품


릴리스

R2019a

Community Treasure Hunt

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

Start Hunting!

Translated by