「find -size 100k」はキロバイトまたはキロバイトを使用しますか?

「find -size 100k」はキロバイトまたはキロバイトを使用しますか?

Linuxのマニュアルを見ていました。このページから、特に(間違った)「-size」テストのセクションでドキュメントを見つけます。キロバイト1024ですバイト。私が知っている限り、これは間違っています。 1キロバイト1000バイト、そしてキロバイト1024バイトです。では、どのような単位ですか?実際に使用? 「キロバイト」と言われていて「1000バイト」を意味しますか、それとも「1024バイト」とされていて「キロバイト」と間違っていますか?

答え1

よく見つけました!明確な説明が正しい。 1kはキロバイト(1024バイト)を表します。さまざまなサイズを作成し、どのサイズが認識されているかを確認してテストしました。

$ for i in 999 1000 1001 1023 1024 1025; do dd if=/dev/urandom of=$i bs=1 count=$i; done
$ find . -size 1k
.
./1024
./1023
./1001
./1000
./999

1025バイトファイルではなく、1024バイトファイルが見つかったことを確認できます。

(必要に応じてバグレポートの提出を検討できます。)

答え2

マニュアルにあなたがリンクしたページ古くて不正確です。一つオンラインページこのエラーが修正された場所は次のとおりです。

-size n [cwbkMG]
ファイルはn単位のスペースを使用し、丸められます。次のサフィックス を使用できます。512
バイトブロックの場合は「b」(サフィックスを使用しない場合はデフォルト)バイトの
場合 は「c」 )バイト) 'M'はMebibytes(MiB、単位は1024 * 1024 = 1048576バイト)を表します。 「G」はGibibytes(GiB、単位は1024 * 1024 * 1024 = 1073741824バイト)を表します。



これBSDルックアップマニュアルまだ正確ではありません。

最新のマニュアルはman find最新のオペレーティングシステムにあります。
GNU find バージョン (find(GNU findutils) 4.7.0-git) 以降、マニュアルは次のようになります。

-size n [cwbkMG]
ファイルはn単位のスペースを使用し、丸められます。次のサフィックスを使用できます。

`b'は512バイトのブロックを表します(接尾辞が使用されていない場合はデフォルトです)、
`c'はバイトを表します。
`w'は2バイトの単語を表します。
`k'はKibibytes(KiB、1024バイト単位)を表します。
「M」はメビバイト(MiB、単位は1024 * 1024 = 1048576バイト)を表します。
「G」はギガバイト(GiB、単位は1024 * 1024 * 1024 = 1073741824バイト)を表します。

したがって、この問題はfindのいくつかのバージョンで修正されました。

関連情報