delete — Remove files in MATLAB and RunMat.

delete(filename) removes files, while delete(obj) invalidates handle objects or listeners. Supported filename forms, wildcard handling, and diagnostics follow MATLAB semantics.

Syntax

status = delete(filename)
status = delete(filename1, filename2, ...)

Inputs

NameTypeRequiredDefaultDescription
filenameAnyYesFilename/pattern string, string array, char matrix, cell array of path strings, or handle input.
filename1AnyYesFirst filename/pattern/handle input.
filenameNAnyVariadicAdditional filename/pattern/handle inputs.

Returns

NameTypeDescription
statusNumericScalarAlways 0 on success; function primarily acts as a sink.

Errors

IdentifierWhenMessage
RunMat:delete:InvalidInputInput arguments are missing or contain unsupported filename value types.delete: invalid input
RunMat:delete:InvalidHandleHandle deletion inputs are mixed with filename inputs or contain unsupported handle values.delete: invalid handle input
RunMat:delete:EmptyFilenameA filename input is empty after trimming.delete: filename cannot be empty

How delete works

  • Accepts individual paths, string arrays, cell arrays of character vectors, and char matrices. Each element targets one file.
  • Accepts handle objects (handle) and event listeners, marking them invalid (isvalid returns false) without touching the filesystem when invoked with non-string inputs.
  • Expands shell-style wildcards (* and ?) using MATLAB-compatible rules. Patterns must resolve to existing files; otherwise, the builtin throws RunMat:DELETE:FileNotFound.
  • Rejects folders. When a target is a directory, RunMat raises RunMat:DELETE:Directories, matching MATLAB’s “Use rmdir to remove directories” diagnostic.
  • Propagates operating-system failures (for example, permission errors or read-only files) through RunMat:DELETE:PermissionDenied.
  • Expands ~ to the user’s home directory and resolves relative paths against the current working folder (pwd).
  • Treats empty character vectors or empty string scalars as invalid inputs and raises RunMat:DELETE:EmptyFilename.
  • When passed an empty string array or empty cell array, the builtin performs no action and returns without error, just like MATLAB.

Does RunMat run delete on the GPU?

delete performs host-side filesystem I/O. When a path argument lives on the GPU (for example, gpuArray("scratch.log")), RunMat gathers the scalar to CPU memory before touching the filesystem. Acceleration providers do not implement dedicated hooks for delete, so there are no GPU kernels or device transfers beyond the automatic gathering of inputs.

GPU memory and residency

No. delete executes on the CPU. If a script accidentally wraps path strings in gpuArray, RunMat gathers the scalars before issuing filesystem calls. Keeping paths on the GPU provides no benefit.

Examples

Deleting a single temporary file

fname = "scratch.txt";
fid = fopen(fname, "w");
fclose(fid);
delete(fname)

Removing multiple files with a wildcard pattern

logs = ["log-01.txt", "log-02.txt"];
for i = 1:numel(logs)
    fid = fopen(logs(i), "w");
    fclose(fid);
end
for i = 1:numel(logs)
    delete(logs(i));
end

Deleting files listed in a string array

files = ["stageA.dat", "stageB.dat"];
for i = 1:numel(files)
    fid = fopen(files(i), "w");
    fclose(fid);
end
delete(files)

Handling missing files safely with try/catch

try
    delete("missing-file.txt");
catch err
    disp(err.identifier)
    disp(err.message)
end

Cleaning up build artifacts stored under your home folder

delete("~/runmat/build/*.o")

Deleting char-matrix filenames generated programmatically

names = char("stage1.tmp", "stage2.tmp");
for row = 1:size(names, 1)
    fname = strtrim(names(row, :));
    fid = fopen(fname, "w");
    fclose(fid);
end
delete(names)

Deleting graphics handles after use

fig = figure;
delete(fig);
tf = isvalid(fig)

Expected output:

tf =
     0

Using delete with coding agents

Open a RunMat example with live inputs, then ask the agent to explain how delete changes the result.

Run a small delete example, explain the result, then change one input and compare the output.

FAQ

What message IDs does delete produce?

Missing files raise RunMat:DELETE:FileNotFound, directories raise RunMat:DELETE:Directories, wildcard syntax issues raise RunMat:DELETE:InvalidPattern, operating-system failures raise RunMat:DELETE:PermissionDenied, and invalid handle inputs raise RunMat:DELETE:InvalidHandle.

Can I delete folders with delete?

No. MATLAB reserves folder deletion for rmdir. RunMat follows suit and throws RunMat:DELETE:Directories when a target is a directory.

Does delete support multiple filenames at once?

Yes. Pass a string array, a cell array of character vectors, or a char matrix. Each element is deleted in turn.

How are wildcard patterns resolved?

RunMat uses MATLAB-compatible globbing: * matches any sequence, ? matches a single character, and the pattern is evaluated relative to the current folder (pwd) unless you pass an absolute path.

What happens when a wildcard matches nothing?

The builtin raises RunMat:DELETE:FileNotFound (just like MATLAB) and leaves the filesystem unchanged.

Do empty arrays raise errors?

Empty string arrays or empty cell arrays simply result in no deletions. Empty strings, however, are invalid and trigger RunMat:DELETE:EmptyFilename.

How do GPU inputs behave?

Inputs on the GPU are gathered to the host automatically. No GPU kernels are launched.

Does delete preserve symbolic links?

Yes. RunMat delegates to the operating system: deleting a symlink removes the link itself, not the target—matching MATLAB.

Can I detect failures programmatically?

Wrap the call in try/catch and inspect err.identifier and err.message just as you would in MATLAB.

Will delete follow relative paths updated by cd?

Yes. Paths are interpreted using the process working directory, so calling cd before delete mirrors MATLAB’s behaviour.

Open-source implementation

Unlike proprietary runtimes, every RunMat function is open-source. Read exactly how delete is executed, line by line, in Rust.

About RunMat

RunMat is an open-source runtime that executes MATLAB-syntax code blazing on any GPU. It is licensed under the Apache 2.0 license.

  • RunMat automatically optimizes your math for GPU execution on Apple, Nvidia, and AMD hardware. No code changes needed. Simulations that took hours now take minutes.
  • Start running code in seconds. RunMat runs in the browser, on the desktop, or from the CLI. No license server, no IT ticket.

Getting started · Benchmarks · Pricing

Download RunMat

Download RunMat for full performance, or use RunMat in your browser for zero setup.