Find FTP files

I/O and network
Find FTP files
Success
Credentials(FTP credentials)
Error
Path .
Files(FTP file[])
Type(enum(FtpEntryFilter)) BOTH
Recursive
Pattern

Description

Finds files and directories on an FTP/SFTP server and returns them as an array of FTP file objects carrying name, path, size, modified time, type, and an exists flag. Filter by entry type, match names against a glob pattern, and optionally recurse into subdirectories (symbolic links are treated as files and never followed). Wire a result into Open/Remove/Move FTP file, or into a Break node to read its fields. Branches on success/error.

When to use

Use Find FTP files to discover files and directories in a directory tree on a remote FTP, FTPS, or SFTP server. Wire the output into a For each loop, then Break each element (a Break FTP file node) to read its path, name, and size fields. Set Recursive to descend into subdirectories — symbolic links are always reported as plain files and never followed, so there’s no risk of cycles, but traversal is capped at depth 16 and 10,000 entries; exceeding either cap takes the Error pin rather than silently truncating the results. Sizes over 2 GiB are clamped to the maximum integer value, and directories always report size 0. Feed the resulting file objects straight into Open, Remove, or Move FTP file — they carry their own server connection, so those nodes don’t need a separate Credentials input. Handle the Error pin to recover from missing directories, an invalid Pattern, or connection failures.

Pins

Input pins

Pin Type Default Notes
Credentials FTP credentials FTP credentials produced by an FTP credentials node.
Path string . Directory to search. Defaults to `.` (the session's working directory). Format follows the server's conventions (e.g. `/incoming` on most Unix servers).
Type enum(FtpEntryFilter) BOTH Filters entries by kind — `FILE`, `DIRECTORY`, or `BOTH` (default). Only affects which entries are returned, not which directories are traversed when Recursive is enabled.
Recursive boolean When true, recurses into subdirectories. Symbolic links are always reported as files and are never followed, so recursion cannot cycle.
Pattern string Glob matched against each entry's base name (not its full path), using Go's `path.Match` syntax: `*`, `?`, and `[...]` character classes. Empty (the default) matches every entry. Like Type, this only filters what's returned — it never blocks traversal into non-matching directories.

Output pins

Pin Type Notes
Files FTP file[] FTP file objects found on the server. Break an element to read its name, path, size, modified time, type, and exists fields, or wire it directly into Open, Remove, or Move FTP file — the file object carries its own server connection, so those nodes don't need credentials.

Execution pins

Pin Direction
In Input
Success Output
Error Output

Example

Process every CSV in an SFTP inbox tree, including subdirectories. Wire FTP username/password credentials (Protocol SFTP) into Find FTP files, set Path to /inbox, Recursive to true, and Pattern to *.csv, then on Success pass Files to a For each loop. Inside the loop, wire the element into Break FTP file to read its Path field, feed the same element into Open FTP file to read the stream, and after processing it, wire the element into Remove FTP file to clear it from the inbox — no credentials needed on either downstream node, since the file object already knows its server.

See also