端末で、xバイトより大きいか小さいファイルを見つけるにはどうすればいいですか?
私は私のようなことができると思います
find . -exec ls -l {} \;
次に、結果を awk
にパイプ処理してファイルサイズでフィルタリングします。しかし、これより簡単な方法はないでしょうか。
つかいます:
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.
私はfind
がAWKにパイプを通さずに単独で役に立つかもしれないと思います。例えば、
find ~ -type f -size +2k -exec ls -sh {} \;
チルダは検索を開始する場所を示し、結果には2キロバイトを超えるファイルのみが表示されます。
見栄えを良くするために、-exec
オプションを使用して、これらのディレクトリをサイズとともに一覧表示するという別のコマンドを実行できます。
詳細は、 find
のマニュアルページ を参照してください。
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
2000バイト以上
du -a . | awk '$1*512 > 2000 {print $2}'
2000バイト未満
du -a . | awk '$1*512 < 2000 {print $2} '