サブディレクトリと親ディレクトリのすべてのcファイルを一覧表示する

サブディレクトリと親ディレクトリのすべてのcファイルを一覧表示する

次のディレクトリツリーがあるとします。

/home/xen/p.c
/home/dan/t.c
/home/jhon/l.c
...
etc (many more users) 

次のようにカンマで区切られた(ユーザー名、cファイルのフルパス)リストを取得する必要があります。

xen,/home/xen/p.c
dan,/home/dan/t.c
...
etc

コマンドラインでこれを行うにはどうすればよいですか?

ベストアンサー1

GNUfind を使用して出力形式を指定できます。ファイルがユーザー自身によって生成されたと仮定すると、コマンドは次のようになります。

find /home/ -maxdepth 2 -type f -name '*.c' -printf '%u,%p\n'

man find詳しくはこちらprintf

以下も使用できます。

find /home/ -maxdepth 2 -type f -name '*.c' -exec bash -c 'n="${1%/*}"; n="${n##*/}"; echo "$n",$1' _ {} \;

おすすめ記事