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

                 Summary: -exec[dir] has odd behavior when there are a lot of
files
                   Group: findutils
               Submitter: None
               Submitted: Wed 16 Jul 2025 07:34:24 PM UTC
                Category: find
                Severity: 3 - Normal
              Item Group: Wrong result
                  Status: None
                 Privacy: Public
             Assigned to: None
         Originator Name: Sky
        Originator Email: skykwasne...@gmail.com
             Open/Closed: Open
         Discussion Lock: Any
                 Release: 4.10.0
           Fixed Release: None


    _______________________________________________________

Follow-up Comments:


-------------------------------------------------------
Date: Wed 16 Jul 2025 07:34:24 PM UTC By: Anonymous
Description
###########

I did some benchmarking with the 'find' command using the '-exec' and
'-execdir' options and came across odd behavior when using 'mv' as the command
to run after 'find' got all the files.

I wanted to see which version of a command would run faster:
- time find -name 'file*' -exec mv -t a '{}' +
or
- time find -name 'file*' -execdir mv -t ../a '{}' +

Setup
#####

1) Make a new directory to do our testing and 'cd' into it (the name doesn't
matter).
user $ mkdir test
user $ cd test

2) Make two new directories called "a" and "b".
user $ mkdir a b

3) Make 100,000 files in directory "a".
user $ touch a/file{1..100000}

4) Run the following command to move all the files in "a" to "b":
user $ find -name 'file*' -exec mv -t b '{}' +

The 'find' command *does* move all the files to directory "b", but 'mv' prints
the following:

mv: './b/file1' and 'b/file1' are the same file
mv: './b/file2' and 'b/file2' are the same file
mv: './b/file3' and 'b/file3' are the same file
...
mv: './b/file100000' and 'b/file100000' are the same file

Upon checking "b", all the files are there and "a" has no files (this is
expected), but when we run 'find' to move the files from "b" to "a", there are
no messages.

The command
user $ find -name 'file*' -exec mv -t a '{}' +
will not print any messages and still move the files. I tested this with the
'-execdir' option as well, and still got this odd behavior.

Trying this with version 4.8.0 results in the reverse being true--where trying
to move files to "a" prints messages from 'mv'. Another thing to note is that
this only happens when there are a LOT of files; if there are only three
files, this odd behavior doesn't happen.







    _______________________________________________________

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