Linux環境で、ls -lコマンドの実行結果から、指定した項目(カラム)を抽出する方法を解説します。
はじめに
下記のような、ls -lコマンドの実行結果から、所有者やグループ、ファイル名などの特定の項目を抽出する方法を説明します。
-rw-r--r--. 1 root root 0 6月 21 18:19 data-20230101.tar.gz
上記の場合、所有者であれば「root」、ファイル名であれば「data-20230101.tar.gz」が取得されます。
特定の項目を抽出する
ここでは、以下のようなls -lの結果から各項目を抽出する方法を説明します。
[root@STKPUB002 data]# ls -l data-20230101.tar.gz -rw-r--r--. 1 root root 5 6月 21 18:20 data-20230101.tar.gz
基本的な書式は以下となります。
ls -l ファイル名 | awk '{print $カラム番号}'
権限
[root@STKPUB002 data]# ls -l data-20230101.tar.gz | awk '{print $1}'
-rw-r--r--.
ハードリンク数
[root@STKPUB002 data]# ls -l data-20230101.tar.gz | awk '{print $2}'
1
所有者(オーナー)
[root@STKPUB002 data]# ls -l data-20230101.tar.gz | awk '{print $3}'
root
グループ
[root@STKPUB002 data]# ls -l data-20230101.tar.gz | awk '{print $4}'
root
ファイルサイズ
[root@STKPUB002 data]# ls -l data-20230101.tar.gz | awk '{print $5}'
5
タイムスタンプ
下記のように、色々な形式で取得することが出来ます。
[root@STKPUB002 data]# ls -l data-20230101.tar.gz | awk '{print $6" "$7}'
6月 21
[root@STKPUB002 data]# ls -l data-20230101.tar.gz | awk '{print $8}'
18:20
[root@STKPUB002 data]# ls -l data-20230101.tar.gz | awk '{print $6$7"日 "$8}'
6月21日 18:20
ファイル名
[root@STKPUB002 data]# ls -l data-20230101.tar.gz | awk '{print $9}'
data-20230101.tar.gz
リンク



コメント