ファイルでもフォルダーでも、ディレクトリ内のすべての項目をサイズの降順に並べ替える単純なプログラムです。
オペレーティング システムはディレクトリを参照するときにディレクトリの内容の合計サイズを計算しないため、グラフィカル ファイル ブラウザを使用しているかコマンド ラインを使用しているかにかかわらず、ディレクトリ内の項目をサイズの降順で並べ替えるのは、思っているほど簡単ではありません。木。この記事では、ほとんどのオペレーティング システムでこの問題を解決する完全な動作プログラムを提供します。
おそらく次のようなおなじみのものを見つけるでしょう:
仕事であれ、個人的なプロジェクトであれ、私は親ディレクトリ (たとえば Projects というディレクトリ) を作成し、そこに個々のプロジェクトのすべてのコンテンツを保存することで、デジタル アセットを整理するのが好きです。プロジェクトが小さく、多くのコンテンツが含まれていない場合は、単一のファイル (通常はテキスト ファイル) を使用します。プロジェクトにさらに多くのコンテンツ (テキスト ファイルやいくつかのスクリーンショットなど) が含まれる場合は、そのプロジェクト用のフォルダーを作成し、そこに関連するすべてのアセットを配置します。したがって、私の観点からすると、単一のテキスト ファイルとフォルダーは、それぞれがプロジェクトを表すという意味で同等です。唯一の違いは、フォルダーがより大きなプロジェクトを表し、より多くのものを含むことです。
時々、自分のプロジェクトのうちどれが現在最大で、どれが最も多くのものを含んでいるかを確認したいことがあります。これは通常、特定の分野にしばらく取り組んでいないために発生します。そのため、その分野に戻ったときに、どのプロジェクトに最も多くのコンテンツが含まれているかを確認したいと考えます。私の推論は、最も多くのコンテンツを含むプロジェクトが最も完成度が高いはずであり、したがって、おそらくそれが最も簡単に完了するので、最初に作業を開始する必要があるということです。
たとえば、次の内容を含むディレクトリについて考えてみましょう:
Name | Type | Size |
---|---|---|
Huge Project.txt | File | 2.6KB |
Larger Project | Folder | 1.07KB |
0 - Tiny Project | Folder | 0KB |
Basic Project.txt | File | 0.36KB |
Big Project.txt | File | 2.11KB |
上記のディレクトリをサイズの降順で並べ替えると、次のように出力されます。
Huge Project.txt 2.6KB Big Project.txt 2.11KB Larger Project 1.07KB Basic Project.txt 0.36KB 0 - Tiny Project 0KB
ただし、これは、Windows、Mac、Linux のグラフィカル ファイル ブラウザで [サイズ] 列ヘッダーをクリックしたときに表示されるものではありません。
コマンド ラインを使用すると、目的の出力に多少近い出力が得られますが、完全に正しいわけではありません。
ディレクトリ /b /o:-d
出力:
Larger Project 0 - Tiny Project Huge Project.txt Big Project.txt Basic Project.txt
Mac や Linux などの UNIX ベースのシステムでは、ディレクトリの内容を並べ替えるためのさまざまなコマンドの組み合わせがあります。ほとんどの場合、du、sort、ls の使用が必要になります。オンラインで見つけた他の例では、find と grep も同様に混合しました。
私が試したものは次のとおりです:
du -a -h --max- Depth=1 |並べ替え -hr
出力:
32K . 8.0K ./Larger Project 8.0K ./0 - Tiny Project 4.0K ./Huge Project.txt 4.0K ./Big Project.txt 4.0K ./Basic Project.txt
ls コマンドで -S スイッチを使用すると、まさに私が探していること、つまり項目をサイズの降順で並べ替えることができるはずです。
ls -S
出力:
'0 - Tiny Project' 'Larger Project' 'Huge Project.txt' 'A - Big Project.txt' 'Basic Project.txt'
出力はオフのままです。 -l (長い) スイッチを追加してみました。
ls -ls
出力:
total 20 drwx---r-x 2 admin admin 4096 Sep 20 21:49 '0 - Tiny Project' drwx---r-x 2 admin admin 4096 Sep 20 21:49 'Larger Project' -rw-rw-r-- 1 admin admin 2667 Sep 20 21:49 'Huge Project.txt' -rw-rw-r-- 1 admin admin 2164 Sep 20 21:49 'Big Project.txt' -rw-rw-r-- 1 admin admin 368 Sep 20 21:49 'Basic Project.txt'
予想どおり、出力にはより詳細な情報が含まれていますが、並べ替え順序は以前と同じです。
さまざまなコマンドの出力では望ましい結果が得られませんが、問題の根本原因が明らかになります。ディレクトリ ツリーを参照するとき、オペレーティング システムは、フォルダを再帰してコンテンツの合計サイズを計算しません。代わりに、すべてのフォルダーが同じ固定サイズを持つものとして扱われます。通常、これはファイル システムの最小ブロック サイズで、通常は 4096 バイト、4KB です。
この問題を解決する無料ツールは少なくとも十数個はあるはずですが、正直に言うと、私は調べもしませんでした。同じことを行うスクリプト/プログラムを書いてここで共有するほうが簡単で、肥大化も少なく、できれば他の人にも役立ち、間違いなくもっと楽しいと感じました。
もう十分長く悩んでしまいました。コードは次のとおりです:
Huge Project.txt 2.6KB Big Project.txt 2.11KB Larger Project 1.07KB Basic Project.txt 0.36KB 0 - Tiny Project 0KB
Larger Project 0 - Tiny Project Huge Project.txt Big Project.txt Basic Project.txt
32K . 8.0K ./Larger Project 8.0K ./0 - Tiny Project 4.0K ./Huge Project.txt 4.0K ./Big Project.txt 4.0K ./Basic Project.txt
'0 - Tiny Project' 'Larger Project' 'Huge Project.txt' 'A - Big Project.txt' 'Basic Project.txt'
4 つの実装にはいくつかの小さな違いがありますが、4 つすべてで使用される一般的なアプローチは同じです。
コマンドラインで、ソートするディレクトリへのパスを最初のパラメータとして渡します。考えられるすべての例をリストするわけではありませんが、コードをコピーし、「ディレクトリ降順」の略称である dir_desc というファイル名と適切なファイル拡張子を付けて保存したものとして、いくつかの例を示します。
Mac または Linux での Python の使用:
python3 dir_desc.py <何らかのパス>
Windows での PowerShell の使用:
powershell -f dir_desc.ps1 <何らかのパス>
私は Python でのオリジナルのアプローチを他のいくつかの言語に移植しました。その結果、3 つの主要なオペレーティング システムのそれぞれで少なくとも 1 つのバージョンが動作するはずです。
それで終わりです。もう一匹のヤクは毛を剃った。これがお役に立てば幸いです。
以上がPython、PowerShell、C#、または Go を使用してディレクトリ内のアイテムをサイズの降順で並べ替えるの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。