
を使用すると、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/'