크기에 따라 파일을 이동하는 방법은 무엇입니까?

크기에 따라 파일을 이동하는 방법은 무엇입니까?

나는 이것을 시도했습니다 :

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

이것은 작동하지 않으며 오류도 발생하지 않습니다. 다음은 사용할 때 파일이 어떻게 보이는지에 대한 예입니다.stat -x

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

답변1

내 맨페이지에서(MacOS 10.11 컴퓨터)

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

c(비표준 확장자 이외의 접미사)

접미사를 지정하지 않았으므로 -size 128128을 의미했습니다.조각또는 64Kbytes는 크기가 127*512+1(65025)에서 128*512(65536)바이트 사이인 파일만 일치합니다.

-size 128c-size -128c정확히 128바이트인 파일, 128바이트(0~127)보다 작은 파일, -size +128c128바이트(129바이트 이상)보다 큰 파일이 필요한 경우 이 옵션을 사용해야 합니다.

답변2

cpNlargest를 aa로 인코딩했습니다.CP명령 버전이 추가되었습니다.질소좀 남았어표현하다.

#!/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;

그래서 명령줄에서 다음과 같이 호출합니다.

$cpNlargest data-input/ data-output/ 5 "json"

관련 정보