I tried this:

find . -type f -size 128 -exec mv {} new_dir/  \;

Which didn't work, and it didn't give me an error. Here is an example of what the file looks like, when using stat -x

$ stat -x ./testfile | grep Size 
  Size: 128          FileType: Regular File

From my manpage (on a MacOS 10.11 machine)

 -size n[ckMGTP]
         True if the file's size, rounded up, in 512-byte blocks is n.  If
         n is followed by a c, then the primary is true if the file's size
         is n bytes (characters).  Similarly if n is followed by a scale
         indicator then the file's size is compared to n scaled as:

         k       kilobytes (1024 bytes)
         M       megabytes (1024 kilobytes)
         G       gigabytes (1024 megabytes)
         T       terabytes (1024 gigabytes)
         P       petabytes (1024 terabytes)

(suffixes other than c being non-standard extensions).

So, since you didn't specify a suffix, your -size 128 meant 128 blocks, or 64Kbytes that is only matched for files whose size was comprised in between 127*512+1 (65025) and 128*512 (65536) bytes.

You should use -size 128c if you want files of exactly 128 bytes, -size -128c for files of size strictly less than 128 bytes (0 to 127), and -size +128c for files of size strictly greater than 128 bytes (129 bytes and above).

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.