Update of bug #67330 (group findutils):

             Open/Closed:                    Open => Closed

    _______________________________________________________

Follow-up Comment #4:

For further clarification, eventually the following example
helps.

mkdir test
cd test
# Test 1: first traverse 'b', then 'a'.
rm -rf a b; mkdir a b && touch a/file{1..100000}
find -D exec b a -name 'file*' -exec mv -t $PWD/b '{}' +

# Test 2: first traverse 'a', then 'b'.
rm -rf a b; mkdir a b && touch a/file{1..100000}
find -D exec a b -name 'file*' -exec mv -t $PWD/b '{}' +

In case 1, find(1) does not find a match in directory 'b',
and continues with 'a'.  This succeeds.

In case 2, find(1) first processes all files in 'a' and
therefore moves them to 'b', and then processes 'b', and
thus finding all the just-moved files again.
Here mv(1) complains that the source and target - i.e.,
within directory 'b' - is the same.

Please note that depending on using -exec or -execdir and
the number of files to move, find(1) has to use multiple
mv(1) invocations or not.
Therefore the effect does e.g. not happen with -exec and
only 10 files regardless of the search order 'a b' vs. 'b a',
because find(1) will only fork one mv(1) after processing both.

Therefore, as this is not a bug, and there's nothing we could
do about it (not even imcproving the docs I think), I'm hereby
closing the issue.


    _______________________________________________________

Reply to this item at:

  <https://savannah.gnu.org/bugs/?67330>

_______________________________________________
Message sent via Savannah
https://savannah.gnu.org/

Attachment: signature.asc
Description: PGP signature

Reply via email to