Sometimes I need to remove all the contents of a directory and create new files there. Can I do something like this and expect all new files to remain intact:

```
% rm -rf regression/* & ( sleep 10 ; run_regression )

```

where `run_regression` timestamps its output files so that they would have unique names and places them in `regression`?

My thinking is that the shell would resolve `regression/*` into an explicit list of **pre-existing** filenames and then `rm` would be removing the files on that explicit list, but not the new files that `run_regression` would be creating contemporaneously with `rm`. Since `run_regression` timestamps its files there should be no name clashes.

However, I'm not quite sure how to tell when the shell is done listing the files and `rm` starts to work. Is the above 10 sec adequate? Can I do something like this in `bash`:

```
% rm -rf regression/* & ( wait_unil_names_are_resolved ; run_regression )

```

Per comment clarifying that I am indeed asking whether the shell guarantees that wildcards would be expanded into filenames before invoking the tool, even if it's a tool intimately known to the shell. I can imagine that the developer of both the shell and the tool may be tempted to pipeline wildcard expansion with the tool; I hope though that there are standards preventing that.