サイズ範囲でファイルを繰り返し検索します。

サイズ範囲でファイルを繰り返し検索します。

コマンドラインを使用して特定のディレクトリから始めて、すべてのファイルが特定のサイズ範囲内にあるすべてのファイルをどのように繰り返し見つけることができますか?

また、サイズ別にソートされた結果も一覧表示されます。

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

関連情報