On 3/4/24 15:37, Petr Malat wrote:
Why do you expect this?
I expect it because mv has always treated destination directories that
way. This has been true since the 1970s. We should not change this basic
mode of operation.
To fix this, 'mv -x' should respect the usual mv behavior with respect to
directories. For example, when D is a directory 'mv -x A B C D' should act
like 'mv A B C D' except that D's old entries should be renamed back to A B
and C. And the -t and -T options should work with -x the same way they work
when -x is not specified.
I do not think this is a good idea, because that operation is not
atomic.
There's nothing wrong with 'mv -x a b c d/' being nonatomic. "mv a b c
d/" is not atomic either, and that's fine too.
Probably, the user wants to prepare a temporary directory
instead and then atomically swap it with the directory in use.
This usage was not at all obvious to me. If it's the intended use, I
suggest inventing a new command, or adding -x to the 'rename' command
instead. Pushing this flag onto 'mv', without making the flag reasonably
orthogonal to mv's other options, would be a mistake because it would
cause too much confusion.
Supporting swap for more than 2 files also brings a problem, when
the operation fails as then one doesn't know what has been swapped
and what not.
I don't see why not. The user can look at mv's diagnostics. It's the
same as regular "mv a b c d/".