ファイルサイズ、名前、およびシンボリックリンクのみを一覧表示

ファイルサイズ、名前、およびシンボリックリンクのみを一覧表示

を使用すると、ls -lah各ファイルについて多くの情報を取得します。

名前とファイルサイズのみどうすればわかりますか?

また、矢印付きのシンボリックリンクのリストを維持したいと思います。

lrwxrwxrwx  1 rubo77    rubo77       4 Nov 21 01:53 test2 -> test

答え1

awkを使用して印刷する列を選択してください。

1つの方法は出力を解析することですls

はい

$ ls -lah | awk '{print $9, $5}' | tail -5
.yEd 4.0K
.youtube-dl 4.0K
.zenmap 4.0K
.zshrc 32
zzzz 3.3K

ちなみに、出力削除を使用できますcolumn

$ ls -lah | awk '{print $9, $5}' | column -t | tail -5
z                                                   4
.youtube-dl                                         4.0K
.zenmap                                             4.0K
.zshrc                                              32
zzzz                                                3.3K

awkを使用して削除する列を選択してください。

他の列を維持しながら他の列を削除するには、このawk方法を使用して不要な列を消去できます。

はい

$ ls -lah | awk '{$1=$2=$3=$4=$6=$7=$8=""}1' | tail -5
    4.0K    .youtube-dl
    4    z -> zzzz
    4.0K    .zenmap
    32    .zshrc
    3.3K    zzzz

最後の解決策

OPは上記の例を組み合わせてこのコマンドスキームを作成しました。

$ ls -lah | awk '{print $5, $9$10$11}' | column -t | column 
...
4.0K  .gphoto              773   .rdebug_hist     4.0K  .youtube-dl
1.5K  .grip                4.0K  .rdesktop        4     z->zzzz

答え2

マニュアルページから:

  -s, --size
          print the allocated size of each file, in blocks

したがって、人間が読めるサイズの場合:

ls -sh

答え3

迅速で汚い方法は、ls -lah出力を他のいくつかのコマンドと組み合わせることです。

ls -lah | tr -s ' ' | cut -d' ' -f5,9-

このtr -sコマンドは、複数のスペースを単一のスペースに置き換え、cut -d' ' -f5,9-列5と9(およびそれ以上)を印刷します。9-シンボリックリンクによって生成された追加のスペースで区切られた列を考慮する必要があります。

答え4

取得できる最も近い方法lsは、抑制されたユーザー列とグループ列を使用することですls -log。さらに一歩進むには、出力を解析できます。 2番目の列(リンク数)には可変幅があります。次のシェルコードスニペットは列の並べ替えを保持し、任意のファイル名(文字通り渡された場合は改行を除く)を処理し、出力を色で表示します(GNU coreutilsを実行していない場合はこの部分を削除)。

if [ -t 1 ]; then color=yes; else color=no; fi
ls -h -log --color="$color" | sed 's/^[^ ][^ ]* *[^ ][^ ]* \( *[^ ][^ ]*\) ............/\1/'

関連情報