
私は最近、いくつかの基本的なUNIXコマンドを学んでいます。今日はls
。結果をサイズ別にソートしたいです。
試してみましたが、
ls -lS /Applications/Utilities
結果は並べ替えられませんでした。試してみましたが、
ls -lS ~/Downloads
結果が整理されました。
理由をご存知ですか?特定のフォルダの結果を並べ替えることができないのはなぜですか?
答え1
/Applications/Utilities
macOSの臭いがします。 macOS の IIRC ディレクトリには通常、通常のファイルではなくディレクトリが含まれます。
ディレクトリは、不透明な形式のファイル名のリストを含む特別な種類のファイルです。ディレクトリファイルのサイズは通常、その中のファイル数によって大きくなりますが、必ずしもそうではありません。たとえば、macOSファイルシステムについてはわかりませんが、他の多くのファイルシステムでは、削除時に(そのファイルがディレクトリから切断されたとき)、ディレクトリエントリが占めるスペースが回収されないことがよくあります。
ディレクトリファイルはブロック単位で割り当てられることがよくあります。私はこれらのすべてのディレクトリに非常に少ない数のエントリが含まれているため、1つのブロック(おそらく4KiB程度)しか含まれていないため、同じサイズであると思います。これはls
、名前でソートされる理由を説明します(関係を解決する方法として)。
全体として、ディレクトリのサイズは実際には関係ありません。
ディレクトリ内のすべてのファイルの累積ディスク使用量に基づいてディレクトリリストを(再帰的に)ソートするには、次の手順を実行します。
du -ks /Application/Utilities/* | sort -n
(このディレクトリ名に改行文字が含まれていないとします。)