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.

採用された回答

Voss
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
fn = 3x1 struct array with fields:
name folder date bytes isdir datenum
% 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
fn = 0x1 empty struct array with fields: name folder date bytes isdir datenum

その他の回答 (1 件)

Chuguang Pan
Chuguang Pan 2024 年 3 月 8 日
maybe you can use cellfun.
Files={'1.txt','2.txt','3.txt'};
cellfun(@delete,Files)
  4 件のコメント
Walter Roberson
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]);
Krishna Ghanakota
Krishna Ghanakota 2024 年 3 月 9 日
I get the following response
'rm' is not recognized as an internal or external command,
operable program or batch file.

サインインしてコメントする。

カテゴリ

Help Center および File ExchangeProgramming Utilities についてさらに検索

タグ

Community Treasure Hunt

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

Start Hunting!

Translated by