ls -lの出力から「total <size>」行を削除する最も簡単な方法は何ですか?


14

Google /で見つけた最高のものman lsは:

ls -l | grep -v '^total'

フラグに欠けているものはありlsますか?

また、-hフラグに関係なく、合計サイズがkbであるのはなぜですか? スクラッチ、それがそうであるように見える、私がその時何を見ていたかわからない。


4
おそらくもう少し効率的かもしれls -l | tail -n+2ませんが、それ以外は答えがありません。
エンゾチブ

エンゾチブの方法がより好きです。提案:エイリアスとして設定し、名前を付けlslます。わずか3文字です;)ohおよびls -lhは、1.2Kスタイルのサイズを示しています。
リンツウィンド

一番簡単な方法を手に入れたと思います。
ロバート

回答:


11

のソースコードを見ると、ディレクトリでオプションを使用すると常に表示されるcoreutilsことtotalがわかりました。-l

-dディレクトリの内容の代わりにエントリをリストするオプションを使用すると、非表示になりtotalます。しかし、引数なしで(またはディレクトリ上で)実行すると、ディレクトリではなく、ディレクトリの内容だけが表示されます。したがって、ワイルドカードが必要です。*すべてのファイルに.*一致し、隠しファイルにも一致します(-aオプションに対応):

ls -ld * .*

-hオプションについては、それは私のために動作します。1118360バイトは1.1Mと表示されます。1024より小さいファイルはバイト単位で表示されます。


1
実際には、-dはエントリではなくディレクトリをリストします。
H2ONaCl

@broiyan lsマニュアルページを手紙に持って行くか、これを検討ls /することができます:「/ファイルの場合はエントリを、ディレクトリの/場合はディレクトリの内容をリストする」と解釈できます。を使用-dすると、最後の条件が削除され、ディレクトリの内容ではなく常にエントリが出力されます。これは、パスがファイルまたはディレクトリの場合に適用されます。
Lekensteyn

できればこれをもう一度
dps

6

ワイルドカードを使用しlsてディレクトリ一覧の実行を回避すると、次lsのようなオプションを使用できなくなるため、最適ではありません--almost-all

同様Enzotibの提案、それを削除する最も簡単な方法は、パイプにそれを介してであるtail最初の行を切り落とすします。ただし、lsその出力がインタラクティブではなくパイプであることを検出し、不要な方法でデフォルトを変更します。したがって、堅牢にするために、いくつかのオプションも追加する必要があります。

  • --color=always:色を表示し続ける
  • --hide-control-chars?コンソール出力を台無しにする可能性のある制御文字の代わりにファイル名で印刷する

スクリプトがあります~/bin/l(でBashエイリアスを使用することもできます~/.bash_aliases):

#!/bin/bash
ls -l --color=always --hide-control-chars "$@" | tail --lines=+2

lsデフォルトで必要な他のオプション、たとえばを追加することもできます--group-directories-first --time-style='+%FT%T.%N%:::z' --indicator-style=slash


ただし、lsに複数のファイル名を渡す場合、これは機能しません。
-Sparhawk

2

ls -l *

を使用せずに「通常の名前の」フォルダコンテンツを提供しtotalます。それはあなたのニーズに適しているかもしれません。残念ながら、dotプレフィックス付きのファイルは提供されません。ls -l * .*Linux を使用するとツリーが上に移動するため、使用すると混乱が生じます。

ドットプレフィックスはフォルダーを意味する可能性があることに注意してください。ワイルドカードでは上記のフォルダーを意味するため、ドットプレフィックスが付いた通常のファイルを選択するのに役立ちません。これは、残念な設計上の決定であったようです。


0

$ ls -l [DIRECTORY] | sed 1d
(出力にはファイル名が含まれます)

$ ls -ld [path-to-dir]/*
(出力には相対パスが含まれますが、色は保持されます)

$ ls -l [DIRECTORY] | tail -n +2

$ ls -l [DIRECTORY] | awk 'NR>=1'


注:
「total ....」という名前のファイルがある場合、以下は機能しません。

$ ls -l | grep -v '^total'

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.