coreutils ls サマリー

coreutils ls サマリー

lsMS-DOS / Windowsのようにcoreutilsコマンドに要約オプションがないのはなぜですか?

要約オプションの場合は、次のことを意味します。
計算文書そして目次そして彼らの要約サイズ

修正する:

内容は次のとおりです。 」でもDOS/Windowsには1つあります。 」

それ:

command.com  vs.  sh
cmd.exe      vs.  bash

後者には明らかな点があります。

しかし、何らかの理由で、それはまさに問題です。 Linux/Unixは要約なしディレクトリのリストにあります。

問題を解決するのではなく、これが正しいこと、正しいことであり、「うまくいきました」と言ってください。

私の考えでは、これは良い例です。XYの問題:

  • ユーザーはXが欲しい。
  • ユーザーはXを実行する方法がわかりませんが、Yを実行できれば解決策を見つけることができると思います。
  • ユーザーはYを実行する方法もわかりません。
  • ユーザーが Y の助けを求めた。
  • 他の人は、ユーザーが問題Yを解決するのを助けようとしますが、Yが解決するのに奇妙な問題であるように見えるので、混乱しています。
  • 多くの相互作用と時間の無駄の終わりに、最終的にユーザーはXの助けを必要とし、Yは目の前の路地であることが明らかになりました。

次の状況を想像してください。

レストランに座ると、ウェイターは声明を取得します。彼はすべての料理をリストしましたが、要約しませんでした!あなたはそれを自分でしなければなりません。彼は「よくやった」。

それとも、その人はそうでしたか?


結論:

もちろん私も知っています - そして好きです -UNIX ツールキット。ただし、基本機能はツール自体で提供する必要があります。特に緊急に必要な場合、正しい位置にいくつかの数字を追加することはまったく問題ではありません。私はそうしない理由がないと思う。


結論として:

私の現在の理解は次のとおりですPOSIX

これPOSIX標準では要約について言及していません。それはすべてです。

石に刻まれています。

人々はそれについて考えないX。彼ら使用される扱うためにはい

しかし、驚くべきことに、私たちはこのシナリオの可能性を完全に無視します。

答え1

ただし、基本機能はツール自体で提供する必要があります。

これは正しいです。 UNIX/Linuxの哲学は次のとおりです。1つのことを行い、それを本当にうまく実行するコマンド/ツールがあります。。その後、あるコマンドの標準出力が別のコマンドの標準入力に接続され、複雑な結果が得られます。

マンページによると、このコマンドの目的はls「ファイルに関する情報のリスト」です。パターンを含めたり除外したり、さまざまな基準で並べ替えたり、さまざまな情報を表示したりするなどのリストを作成できますが、それはすべてです。ファイルセットのフルサイズの計算は責任ではありませんls。実際、そのようなことが起こりましたdu。マンページにあるこのduコマンドは、「ファイルセットのディスク使用量を要約する」ツールです。

したがって、これはあなたが探している答えではないかもしれませんが、ls動作は次のとおりです。UNIXによって設計。このデザインは何十年も効果的であることが証明されていると付け加えることができます。

一方、私が気づいたように、Windowsの哲学は異なります。私が見るには、その目標は、ユーザーにすべてを行うための一般的なツールをいくつか提供することです。

答え2

duファイルとディレクトリの使用量を要約する強力なコマンドです。バラよりhttps://superuser.com/questions/162749/how-to-get-the-summarized-sizes-of-directories-and-their-subdirectories

たとえば、du -sh *各フォルダのサイズを確認します。この-cオプションを追加すると、du -csh *最後に合計が表示されます。

ファイル数は、wc以下のようにls出力をパイピングすることで確認できますls | wc -l

何をしても、Linuxには方法があると確信しています。 DOS/Windows で慣れているものとは異なる場合がありますが、一般に Linux は実装できる点ではるかに柔軟です。

答え3

さて、出力を生成できるunix / linuxユーティリティがあります。似たようなdir出力としてDOS(私はレンズを使用していますこのページを参考資料として使用してください今はWindowsコンピュータにアクセスできないので):

tree

要約とともに、現在のディレクトリの内容を一覧表示します。DOSに類似次のスイッチを使用してください。

-i - インデント行を印刷しない
-L 1 - 深さレベルを1に設定
--du - 各ディレクトリサイズをすべてのファイルとサブディレクトリ(拒否されない限り、そのファイルなど)の累積サイズを適切なレベルまで報告します。ディレクトリのサブディレクトリ-L。使用された合計スペースサイズも最終レポートに提供されます。
--timefmt '%D %T' --フォーマット文字列に従って日付を印刷してフォーマットします。%D %T

たとえば、実行してみてください。

tree -i -L 1 --du --timefmt '%D %T'

印刷

[    8499420 12/05/22 21:38:20]  .
[    2028626 12/28/21 13:24:00]  02.jpg
[    4907520 11/08/22 01:54:10]  03.JPG
[       4096 12/05/22 17:38:54]  05-dir
[     465991 11/01/22 21:46:33]  08.jpg
[     418149 11/01/22 21:46:33]  09.jpg
[       4096 11/28/22 20:42:09]  11-dir
[     583732 10/16/22 21:34:43]  16.png
[      83114 02/20/22 23:01:49]  19.jpg

     8499420 bytes used in 2 directories, 6 files

今...いくつかの違いがあります。

まず、私が知っている限り、<DIR>後処理なしでディレクトリを印刷する方法はありません...しかし、環境変数が設定されて出力があれば、treeディレクトリはどちらも異なる色を持ちます。 、他のものを使用することができます。たとえば、私の設定では次のようになります(今回は印刷サイズに人が読める形式が追加されています)。LS_COLORSttyTREE_COLORS-h

TREE_COLORS="di=1;32" tree -i -L 1 --du --timefmt '%D %T' -h

ここに画像の説明を入力してください。

-F使用時と同じ機能もあります。たとえば、ディレクトリに1つ、ソケットファイルに1つ、実行可能ファイルに1つなどlsを追加します(詳細については、ファイルの並べ替え方法、隠しファイルの表示を参照してください) 、等。)/=*

次に、サイズ、tree日付、ファイル名の順に別の順序で列を印刷します。同様に、後処理なしで列の順序を変更する方法はありません。 v.1.7からtreeJSONを出力することが可能です。そのJSON出力は、たとえばjq次のようにパイプできます。「ツール自体が提供する基本機能」

関連情報