1

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
6

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).

0

I have coded cpNlargest as a a cp command version adding N and some expression.

#!/bin/bash

# cp - copy the N largest files and directories
# cp SOURCE DEST N EXP

SOURCE=$1
DEST=$2
N=$3
EXP=$4


for j in $(du -ah $SOURCE | grep $EXP | sort -rh | head -${N} | cut -f2 -d$'\t');
do
    cp $j $DEST;
done;

So i call it from command line like this:

$cpNlargest data-input/ data-output/ 5 "json"
  • 1
    be aware that this solution is unsafe in the face of filenames with spaces, tabs, or newlines in them. – Jeff Schaller Aug 9 at 15:53
  • spaces, tabs, or newlines in filenames is bad practice in general. However i would appreciate if you @JeffSchaller suggest the corresponding enhancement. – alemol Aug 9 at 17:10
  • I was about to make some changes, but I'll instead recommend a find-based solution, or one in a shell (such as zsh) that can handle it natively. See also unix.stackexchange.com/q/131766/117549 and unix.stackexchange.com/q/171346/117549 – Jeff Schaller Aug 9 at 17:22

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.