Hello, I have a cell array with the list of files I would like to delete. However I would not like to use a for loop to loop through each file to delete it.
4 ビュー (過去 30 日間)
古いコメントを表示
Files - A cell array of size 1x3 with file names to be deleted.
Files =
1×3 cell array
{'1.txt'} {'2.txt'} {'3.txt'}
Working Code :
for i = 1:length(Files)
delete(string(Files(i)));
end
However, I would like to write a single line of code without for loop to achieve the same.
Note: Every run of my code can have different number of files to be deleted. So hardcoding with the command
delete 1.txt 2.txt 3.txt
will not be helpful.
0 件のコメント
採用された回答
Voss
2024 年 3 月 8 日
編集済み: Voss
2024 年 3 月 8 日
Pass the file names as arguments to delete(). Since the names are already in a cell array, this is easy:
delete(Files{:})
Demonstration:
% make some .txt files:
writematrix(1,'1.txt')
writematrix(2,'2.txt')
writematrix(3,'3.txt')
% get info about the .txt files:
fn = dir('*.txt') % 3 files found
% construct a cell array with the file names:
Files = fullfile({fn.folder},{fn.name});
% delete the files:
delete(Files{:})
% confirm that all three files have been deleted:
fn = dir('*.txt') % 0 files found
その他の回答 (1 件)
Chuguang Pan
2024 年 3 月 8 日
maybe you can use cellfun.
Files={'1.txt','2.txt','3.txt'};
cellfun(@delete,Files)
4 件のコメント
Walter Roberson
2024 年 3 月 8 日
You need to account for special characters in file names.
% this will probably break if filenames have spaces or other issues
files = {'1.txt','2.txt','3.txt'};
comstr = sprintf(repmat('"%s" ',[1 numel(files)]),files{:});
system(['rm ' comstr]);
参考
カテゴリ
Help Center および File Exchange で Programming Utilities についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!