크기 범위에서 파일을 반복적으로 찾습니다.

크기 범위에서 파일을 반복적으로 찾습니다.

명령줄을 사용하여 특정 디렉터리에서 시작하여 모든 파일이 특정 크기 범위 내에 있는 모든 파일을 어떻게 반복적으로 찾을 수 있습니까?

또한 크기별로 정렬된 결과를 나열합니다.

답변1

당신은 그것을 사용할 수 있습니다

find /PATH/TO/specific_directory -size +MIN -size -MAX

MIN무엇이 무엇인지 , MAX무엇이 될 수 있는지 에 대한 정확한 정보를 보려면 다음을 확인하세요.man find

   -size n[cwbkMG]
          File uses n units of space, rounding up.  The following suffixes can be used:

          `b'    for 512-byte blocks (this is the default if no suffix is used)

          `c'    for bytes

          `w'    for two-byte words

          `k'    for kibibytes (KiB, units of 1024 bytes)

          `M'    for mebibytes (MiB, units of 1024 * 1024 = 1048576 bytes)

          `G'    for gibibytes (GiB, units of 1024 * 1024 * 1024 = 1073741824 bytes)

          The size is simply the st_size member of the struct stat populated by the lstat (or stat) system call, rounded
          up as shown above.  In other words, it's consistent with the result you get for ls -l.  Bear in mind that  the
          `%k'  and  `%b'  format  specifiers of -printf handle sparse files differently.  The `b' suffix always denotes
          512-byte blocks and never 1024-byte blocks, which is different to the behaviour of -ls.

          The + and - prefixes signify greater than and less than, as usual; i.e., an exact size of  n  units  does  not
          match.   Bear  in mind that the size is rounded up to the next unit.  Therefore -size -1M is not equivalent to
          -size -1048576c.  The former only matches empty files, the latter matches files from 0 to 1,048,575 bytes.

새로운 요구 사항을 충족하도록 업데이트되었습니다.:

find /PATH/TO/specific_directory -size +MIN -size -MAX -print0 | du --human-readable --files0-from=- | sort --human-numeric-sort

또는 짧은 형식으로 말하면 다음과 같습니다.

find /PATH/TO/specific_directory -size +MIN -size -MAX -print0 | du -h --files0-from=- | sort -h

새로운 요구 사항을 충족하도록 업데이트되었습니다(2):

find /PATH/TO/specific_directory -size +MIN -size -MAX -print0 | du --human-readable --bytes --files0-from=- | sort

답변2

zsh1K – 10M 사이의 파일:

print -l /PATH/TO/DIR/**/*(.Lk+1Lm-10oL)
  • 재귀 전역:**/*
  • 일반 파일의 경우:(.)
  • > 1KiB:(Lk+1)
  • 그러나 < 10MiB:(Lm-10)
  • 크기별로 오름차순으로 정렬:(oL)

관련 정보