最小幅のアイテムのリストを列にするにはどうすればよいですか?


7

列のない入力を列のように列化するにはどうすればよいlsですか?

ls 各行の最小幅で最適化されたテーブルを作成しています。次に例を示します。

ls

2  dsao  file with space  with
5  e     g                wsdl-rubo-6cb0f1a9086e80c
d  file   leading space

しかし、出力をcolumn(たとえば、各ファイルを1行に)フィードすると、すべての行が同じ幅で埋め込まれるため、画面の幅に適合します。

for i in *; do echo "$i"; done | column

2                               file with space                          
5                               g                                        
d                                leading space                           
dsao                            with                                     
e                               wsdl-rubo-6cb0f1a9086e80c                
file

(ここでは例として同じ出力を生成するためにファイルリストのみを使用しています。最終的に他のものを列化するためのそのような解決策を探しています。)

可変のcol-widthで出力を丸めるにはどうすればよいですか?


さて、あなたのコメントの別の読み方は、あなたのコメントを正しく理解していれば、「column -c_ n-x`のように入力を列化しますが、指定された幅を埋めるのではなく、できるだけ少ない画面列に出力を合わせます」でしょう。これは正しいです?
jthill 2013年

はい、ほぼ:さらに、画面に収まる列をできるだけ多く生成する必要があります。(lsそれを管理するような)。coreutils lsコマンド
rubo77 '21

回答:


5

これを質問してくれた@ rubo77に感謝します。すばらしい練習です。私にとって、英語がタフなものであるということは、1つ1つのエラーを誤りでした。タフなものはリズムを台無しにすることです。

[最終編集:https : //github.com/jthill/columnate/blob/master/columnateに移動、バグ修正、行メジャー実装。]


また、これをgithubに置く必要があります。ls-algorythmより速い場合は、より高速なls-utilを作成できますか?
rubo77 2013年

@ rubo77 COLUMNS変数にフィードする必要があります。コードの「test with」コメントを参照してください。そして、10x-20xはその逆です。主にCに対してawkであるため、遅くなります
jthill

time ls | sort | columnate COLUMNS=$COLUMNS
jthill 2013年

あなたは天才です。これはすべてのLinuxディストリビューションで公開する必要があります
rubo77

ええ、本当にありがとう、でもそれは強すぎる。コードを読んで
みれば

3

の出力に近いものls

for i in *; do echo -en "${i}\t"; done; echo

入力行の幅が複数のタブで変化している場合、行がジャンプするだけです。ウィンドウの右側で出力が中断するのを防ぐ方法はありますか?
rubo77 2013年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.