findの結果を「ls -l」で表示する方法

findの結果をlsの結果のように表示する

findで結果は相対パスでしか表示されません。ファイルの所有者情報をパーミッションを表示させるls -lのように表示するにはオプションで「-ls」と使用するか「xargs」を使用して引数を「ls -l」で表示させる方法などがあります

# オプションを使用しない場合は、相対パスしか表示されません
$ find ./ -type f -name *.js
./highlight.pack.js

# ls -lだと所有者・パーミッション等が表示される
$ ls -l
合計 124
-rw-rw-r-- 1 testuser testuser 54022 11月 24  2016 CHANGES.md
-rw-rw-r-- 1 testuser testuser  1498 11月 24  2016 LICENSE
-rw-r--r-- 1 testuser testuser  4768 11月 24  2016 README.md
-rw-r--r-- 1 testuser testuser  6124 11月 24  2016 README.ru.md
-rw------- 1 testuser testuser 44782 11月 24  2016 highlight.pack.js
drwxrwxr-x 2 testuser testuser  4096 11月 24  2016 styles

オプションの「-ls」を使ってfind結果を表示する

findコマンドのオプションで「-ls」を利用すると、「 ls コマンドの -dils 書式で標準出力」ことができます

$ find ./ -type f -name *.js -ls
15471824   44 -rw-------   1 testuser   testuser      44782 11月 24  2016 ./highlight.pack.js

-dilsについてですが、下記のようなオプションです(Man page of LSより)

-d, –directory
ディレクトリの中身を表示せず、 他のファイルと同じようにディレクトリ名をリスト表示する。

-i, –inode
それぞれのファイルについて、ファイル名の左に inode 番号 (ファイルシリアル番号やインデックス番号とも呼ばれる) を表示する。

-l, –format=long, –format=verbose
ファイル名に加えて、ファイルタイプ・アクセス権・ハードリンクの数・ 所有者名・グループ名・バイト単位のサイズ・タイムスタンプ (他の時刻が選択されなければ、修正時刻) を表示する。

-s, –size
それぞれのファイルのディスク割り当て量をファイル名の左に表示する。

findとxargsに組み合わせて「ls -l」のように表示する

findとxargsを組み合わせて、findの結果を「ls -l」で表示します。
「xargs -r 」のオプションは、標準入力に空行しか含まれていない場合、コマンドを実行しないようにしています。このオプションを付けない場合は、findの結果が空だと、実行したディレクトリで「ls -l」が実行されます

$ find ./ -type f -name *.js | xargs -r ls -l
-rw------- 1 testuser testuser 44782 11月 24  2016 ./highlight.pack.js

# xargs -rのオプションがない場合は、出力結果が空だと、ls -l が実行されます
$ find ./ -type f -name *.txt | xargs ls -l
合計 124
-rw-rw-r-- 1 testuser testuser 54022 11月 24  2016 CHANGES.md
-rw-rw-r-- 1 testuser testuser  1498 11月 24  2016 LICENSE
-rw-r--r-- 1 testuser testuser  4768 11月 24  2016 README.md
-rw-r--r-- 1 testuser testuser  6124 11月 24  2016 README.ru.md
-rw------- 1 testuser testuser 44782 11月 24  2016 highlight.pack.js
drwxrwxr-x 2 testuser testuser  4096 11月 24  2016 styles

 

スポンサーリンク