web-dev-qa-db-ja.com

`ls`を最初のXファイル/ディレクトリのみをリストするように設定できますか?

lsコマンドが呼び出されたときに最初の30ファイルのみを表示するコマンドを作成しようとしています。私はこの方法を見つけました...

ls | head -30

...しかし、ファイルを1つの長いリストに吐き出し、行にフォーマットしたり、.bash_profileのように色付けしたりすることはありません。それで、単に出力を制限する方法はありますか?

7
asteri

アスタリスクが質問を明確にするまで、私はJohn1024が答えを持っていると思いました。これで、--colorオプションがなくても以下が機能するようです。

ls -d $(ls | head -30)

残念ながら、これは単純すぎて、ファイル名に空白があると失敗します。それを考慮に入れるには、より手の込んだものが必要です。

ls -b | head -30 | xargs ls -d

どちらの場合も原則は同じです:ls | headは最初の30ファイルを1行に1つ取得し、-dを必要とする別のlsコマンドへの引数リストとして提示されますファイルのいずれかがディレクトリである場合のオプション。

8
AFH

着色を取得するには:

ls -l --color=always | head -30

通常、lsは、出力が直接端末に送られる場合にのみ色を生成します。これは一般的に良いことです。これを上書きするには、--color=alwaysを使用します

上記は、1行に1つのファイルで出力を生成します。必要に応じて、スペースを確保し、1行あたりのファイル数を増やしてから、次のことを試してください。

ls -l | head -30 | column

列ユーティリティは、入力を複数の列にフォーマットします。ただし、色を使用すると混乱する可能性があります。

3
John1024