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のいくつかのバージョンで修正されました。