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
答え3
これを実行したい:
ls -l | sed -n '/^.rwx/p'
n - >一致するデータのみを印刷
^.rwx ->任意の文字で始まり、その後にrwxが続きます。
p ->データ印刷