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
DisplayName
  • 11,688

2 Answers2

7

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"
alemol
  • 101
  • 1
    be aware that this solution is unsafe in the face of filenames with spaces, tabs, or newlines in them. – Jeff Schaller Aug 09 '19 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 09 '19 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 https://unix.stackexchange.com/q/131766/117549 and https://unix.stackexchange.com/q/171346/117549 – Jeff Schaller Aug 09 '19 at 17:22