From fe22d275f3540017e3344ed95bfed5a611d8300e Mon Sep 17 00:00:00 2001 From: Thayne McCombs Date: Sun, 22 Oct 2023 23:16:40 -0600 Subject: [PATCH] docs: Explicitly warn against relying on result order for exec Supersedes: #1230 Fixes: #1228 --- doc/fd.1 | 7 +++++++ src/cli.rs | 2 ++ 2 files changed, 9 insertions(+) diff --git a/doc/fd.1 b/doc/fd.1 index 03b86f6..14cfb92 100644 --- a/doc/fd.1 +++ b/doc/fd.1 @@ -368,6 +368,10 @@ This option can be specified multiple times, in which case all commands are run file found, in the order they are provided. In that case, you must supply a ';' argument for all but the last commands. +If parallelism is enabled, the order commands will be exectued in is non-deterministic. And even with +--threads=1, the order is determined by the operating system and may not be what you expect. Thus, it is +recommended that you don't rely on any ordering of the results. + The following placeholders are substituted before the command is executed: .RS .IP {} @@ -411,6 +415,9 @@ Examples: Execute .I command once, with all search results as arguments. + +The order of the arguments is non-deterministic and should not be relied upon. + One of the following placeholders is substituted before the command is executed: .RS .IP {} diff --git a/src/cli.rs b/src/cli.rs index 0a2c54e..2fbd9ac 100644 --- a/src/cli.rs +++ b/src/cli.rs @@ -800,6 +800,7 @@ impl clap::Args for Exec { .help("Execute a command for each search result") .long_help( "Execute a command for each search result in parallel (use --threads=1 for sequential command execution). \ + There is no guarantee of the order commands are executed in, and the order should not be depended upon. \ All positional arguments following --exec are considered to be arguments to the command - not to fd. \ It is therefore recommended to place the '-x'/'--exec' option last.\n\ The following placeholders are substituted before the command is executed:\n \ @@ -834,6 +835,7 @@ impl clap::Args for Exec { .help("Execute a command with all search results at once") .long_help( "Execute the given command once, with all search results as arguments.\n\ + The order of the arguments is non-deterministic, and should not be relied upon.\n\ One of the following placeholders is substituted before the command is executed:\n \ '{}': path (of all search results)\n \ '{/}': basename\n \