1

使用しているコマンドの構文エラーは何ですか。

現在のディレクトリで、コマンドを使用ls -lしてディレクトリ内のファイルのアクセス許可を取得します。

ユーザーがどのファイルを読み取り、書き込み、実行可能かを確認し、awkを使用してフィルター処理されたリストを出力するにはどうすればよいですか?

私が興味を持っているビットは、2番目、3番目、4番目です。

例えば、

-rw-r----- .. .. .. ..

また

drw-r----- .. .. .. ..

私は次のようにawkコマンドを持っています:

ls -l | awk '{if{$1 == /.rwx....../}print "line"}'

多くのことを試しましたが、まだ構文エラーがあります。

どんな助けでも大歓迎です!前もって感謝します!

4

2 に答える 2

3

文字列が正規表現に一致するかどうかを確認するために使用される演算子は~、ではなく、==です。また、ステートメント()の条件を回避するために使用します。if

ls -l | awk '{ if ($1 ~ /.rwx....../) print "line" }' 
于 2012-05-20T21:28:03.160 に答える
0

私はデニスに同意します。配管を避けるのが最善でlsあり、何かをする場合は、次を使用して適切に行うこともできますstat

stat -c '%A %N' * | awk '/^-rwx/ { print $2 }' | sed "s%^.\(.*\).$%\1%"

またはちょうどawkで:

stat -c '%A %N' * | awk '/^-rwx/ { print substr ($2, 2, length ($2) - 2) }'

編集:

上記はスペースを含むファイルで失敗します(申し訳ありません)。これはスペースと改行文字を考慮します:

stat -c '%A %N' * | awk '/^-rwx/ {print substr($0, 13, length($0) - 13) }'

于 2012-05-21T04:59:12.267 に答える