sed 使用中にエラーが発生しました。

sed 使用中にエラーが発生しました。

UNIXで次のコマンドを作成しようとしています。

ls -l | sed 'p/^.rwx'

ただし、次のエラーが発生します。

sed: -e expression #1, char 2: extra characters after command

ユーザーにフルアクセス権を持つファイル/ディレクトリを印刷しようとしています(rwx)。

答え1

rintコマンドはp最後に表示され、デフォルトで印刷を無効にします。

ls -l | sed -n '/^.rwx/p'

このコマンドを使用するシステムを使用している場合は、stat問題を解決する別の方法があります。

for f in *
do
  stat -c "%a" "$f" | grep -q ^7 && printf "%s\n" "$f"
done

依存出力は、ls誰かが次のファイルを作成したことを考慮すると危険です。

touch $'foo\n-rwx some file'

ls...正規表現と(間違って)一致する出力に単一行が生成されます。この問題はshell glob()を使用して*回避できます。

別の方法は、次のものを使用することですfind

find . ! -name . -prune -perm -700 -ls

答え2

あなたの特定質問、使用を検討してください

find . -perms 700 -maxdepth 1 -ls

または

find . -perms /u+rwx -maxdepth 1 -ls

引用する

答え3

これを実行したい:

ls -l | sed -n '/^.rwx/p'

n - >一致するデータのみを印刷

^.rwx ->任意の文字で始まり、その後にrwxが続きます。

p ->データ印刷

関連情報