x バイトより大きい/小さいファイルを見つけるにはどうすればいいですか?

x バイトより大きい/小さいファイルを見つけるにはどうすればいいですか?

ターミナルで、x バイトより大きいまたは小さいファイルを見つけるにはどうすればよいでしょうか?

こんな感じでできると思います

find . -exec ls -l {} \;

そして結果をパイプでawkファイルサイズでフィルタリングします。しかし、これよりも簡単な方法があるのではないでしょうか?

答え1

使用:

find . -type f -size +4096c

4096 バイトより大きいファイルを検索します。

そして :

find . -type f -size -4096c

4096 バイト未満のファイルを検索します。

サイズを切り替えた後の + と - の違いに注意してください。

スイッチは-size次のように説明しました。

-size n[cwbkMG]

    File uses n units of space. 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 Kilobytes       (units of 1024 bytes)

    `M'    for Megabytes    (units of 1048576 bytes)

    `G'    for Gigabytes (units of 1073741824 bytes)

    The size does not count indirect blocks, but it does count
    blocks in sparse files that are not actually allocated. 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 1 Kilobyte blocks, which is different
    to the behaviour of -ls.

答え2

AWKにパイプしなくても単独で使えると思いfindます。例えば、

find ~ -type f -size +2k  -exec ls -sh {} \;

チルダは検索を開始する場所を示し、結果には 2 キロバイトを超えるファイルのみが表示されます。

さらに高度な機能として、-execこれらのディレクトリとそのサイズを一覧表示する別のコマンドを実行するオプションを使用できます。

詳細については、マニュアルページfind

答え3

AWK は、このような作業には非常に便利です。ご質問のとおり、ファイル サイズのチェックに関して AWK で実行できることをいくつか紹介します。

200 バイトを超えるファイルを一覧表示します。

ls -l | awk '{if ($5 > 200) print $8}'

200 バイト未満のファイルを一覧表示し、そのリストをファイルに書き込みます。

ls -l | awk '{if ($5 < 200) print $8}' | tee -a filelog

0 バイトのファイルを一覧表示し、そのリストをファイルに記録して、空のファイルを削除します。

ls -l | awk '{if ($5 == 0) print $8}' | tee -a deletelog | xargs rm

答え4

使用fd、これはより使いやすいですfind

fd -S +1g

現在のディレクトリ内で1GBを超えるファイルを検索します

fd -S -1g

ファイルを検索します小さい1GB以上

関連情報