ls -lのファイルとディレクトリのリストを水平に印刷するのではなく、1列にどのように並べ替えることができますか?

ls -lのファイルとディレクトリのリストを水平に印刷するのではなく、1列にどのように並べ替えることができますか?

現在のユーザーのすべてのファイルとディレクトリ名を印刷しようとしていますが、1行は印刷されます。 ls -lを印刷するときと同様に、各ファイルが列として表示されるようにします。

これを助ける必要はありませんが、より良い文脈のために、各ファイル名の後にコロン ":"が表示されることを確認し、最初のフィールドにグループ権限があることを確認しようとしました。たとえば、「file/dir:---」または「file/dir:r--」のように見えます。

echo $(ls -l /home/$(whoami) | awk '{if (NR>1) print $9}'): $(ls -l /home/$(whoami) | awk '{if (NR>1) print $1}')

ベストアンサー1

ls -1

1行に1つのファイルを一覧表示します。lsこれは、出力が端末以外の場所にリダイレクトされる場合のデフォルトです。

必要な結果を得るには、次のことをお勧めします。

ls -l | awk 'NR > 1 { print $9 ":" $1 }'

またはより良い方法は

stat -c "%n:%A" *

どちらもグループ権限だけでなく、すべての権限もリストします。グループ権限のみを表示するには、以下を使用してください。

ls -l | awk 'NR > 1 { print $9 ":" substr($1,5,3) }'

または

stat -c "%n:%A" * | sed 's/....\(...\)...$/\1/'

(方へユーザー 1404316~のため表現sed方式)。

-parsinglsバリアントはファイル名のスペースやその他のスペース文字を処理しないため、一般的に使用しないでください。

おすすめ記事