Linuxコマンド出力からの最初の行の省略


167

以下の出力からls -latr "some path"削除する必要があるので、私はの出力から1行目を省略したいという要件がありtotal 136ます

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

なのでls -latr /home/kjatin1/DT_901_linux//autoInclude/system | tail -q1行目を省いて書いたのですが、フォルダが空の時は省略しません。Linuxコマンドの出力で1行目を省略する方法を教えてください

回答:



260

tailプログラムは、この操作を行うことができます。

ls -lart | tail -n +2

-n +2「出力の2行目を通過し始める」という意味です。


1
いくつかのことに注意してtail実装が必要とする-nように、そのためのフラグをtail -n +2
マット

を使用することもできますがfind . -name . -o -ls -prune、出力は多少異なります。
ドナルフェロー

@マット:それは、私が試したとき(OSX上で)なくても機能しましたが、そうです。
ドナルフェロー

以前はcoreutilsテールで機能していましたが、非推奨になり、削除されました。tail: cannot open '+2' for reading: No such file or directory(coreutils 8.7)が得られます。悲しいことに、他の実装では受け入れられません-n...
Mat

4
@マット:必要な人もいれば、受けない人もいますか?うわっ!うわぁぁぁぁぁぁぁぁぁぁ!それは嫌です。
ドナルフェロー


20

これは手っ取り早い方法ですls -lart | grep -v ^total

基本的に、 "total"で始まる行をすべて削除します。これは、ls出力では最初の行のみになるはずです。

より一般的な方法(何でも):

ls -lart | sed "1 d"

sed "1 d" 最初の行以外はすべて印刷することを意味します。


3
grepこのタスクのフィルタリングに使用することは、一般的に危険です。予期せぬことに一致する可能性があります。
ドナルフェロー

時々はい、そしてそれは最良の解決策ではないと私は思います...しかし、そのlsコマンドは常にディレクトリのアクセス許可を持つエントリを導きます。grepは各行をチェックし続け、lsは他のフラグとは異なる動作をするため、これは理想的ではありません。
ジェフファーランド2011

1
これは単なる意味論ですが、技術的にはストリームから最初の行を削除することを意味します。
John Morales

知っておきたい名前の合計をファイルに入れないでください
Amias
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.