ls -l の結果からファイルの権限とファイル名を分離するにはどうすればよいですか?

ls -l の結果からファイルの権限とファイル名を分離するにはどうすればよいですか?

ファイル名と対応するファイル権限のみを表示したいのですが、どうすればいいでしょうか?

ls -lは

-rw-rw-r-- 1 jb jb    102 Apr 28 12:48  hello2.txt
-rw-rw-r-- 1 jb jb    102 Apr 28 12:53  hello.txt

以下のようにしたい

-rw-rw-r-- 1  hello2.txt
-rw-rw-r-- 1  hello.txt

答え1

コマンドstatは次の目的で作成されます:

stat -c '%A %n' *.txt

または

stat --printf '%A\t%n\n' *.txt

ここで、書式指定子の意味は以下のとおりです。

   %A     access rights in human readable form
   %n     file name

答え2

それ自体を使用することで、ほとんどの目的を達成できますlsls -lGg --time-style=+アクセス モード、リンク数、サイズ、および名前のみが出力されます。

ファイル名には何でも含まれる可能性があるため、出力の処理は難しいです。処理時にファイル名について何も想定できません。代わりに、必要な情報を正確に印刷するls方がよいでしょう。find-printf:

find . -printf '%M %p\n'

-maxdepth(リストを制限するために、必要に応じてなどのオプションを使用します。)

答え3

gawk次のようにパイプして、必要なフィールドを出力できます。

ls -l | gawk '{print $1 " " $2 " " $9}'

関連情報