コマンドラインを使用して特定のディレクトリから始めて、すべてのファイルが特定のサイズ範囲内にあるすべてのファイルをどのように繰り返し見つけることができますか?
また、サイズ別にソートされた結果も一覧表示されます。
答え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
zsh
1K – 10Mの間のファイル:
print -l /PATH/TO/DIR/**/*(.Lk+1Lm-10oL)
- 再帰グローバル:
**/*
- 一般ファイルの場合:
(.)
- > 1KiB:
(Lk+1)
- しかし、< 10MiB:
(Lm-10)
- サイズで昇順に並べ替え:
(oL)