前のコマンドで返されたリストからループを作成する方法は?

前のコマンドで返されたリストからループを作成する方法は?

すべてのサブディレクトリのすべての所有者を一覧表示し、各IDを確認するスクリプトを作成したいと思います(IDのsesuにアクセスできる場合)。

**$**ls -lrth /apps/wldomains | grep '^d' | awk '{ print $3 }'
userid1
userid2
userid3
userid4
.
.
.

**$**sesu - userid1
Please enter your password:
**userid1@SERVER:$**sesu - userid2
Please enter your password:
**userid2@SERVER:$**sesu - userid3
.
.
.
.

答え1

awkのprintf機能を使用してからkshにパイプします。

ls -lrth /apps/wldomains | awk '$1 ~/^d/ { printf "sesu %s\n", $3 }'

生成しなければならない

sesu userid1
sesu userid2
sesu userid3
sesu userid4

| ksh確認して追加してください。

ls -lrth /apps/wldomains | awk '$1 ~/^d/ { printf "sesu %s\n", $3 }'| ksh
  • 私もgrep | awk圧縮しました。awk

答え2

解析する必要はありません。ls:

find /apps/wldomains -type d -exec stat -c %U {} \; | sort -u | xargs -n 1 sesu -
  • find /apps/wldomains -type d以下のすべてのディレクトリ/apps/wldomains/apps/wldomainsそれ自体を含む)が検索されます。

  • stat -c %U検索したディレクトリ所有者のユーザ名が出力されます。

  • sort -uこれらのユーザー名を取得し、別のユーザー名のリストに並べ替えます。

  • xargs -n 1 sesu -このリストを取得し、sesu -各リストに対して実行します。

Solarisでは、GNU coreutilsパッケージをインストールgstatしますstat

関連情報