Seu comando p
rint precisa vir no final e você também deseja suprimir a impressão por padrão:
ls -l | sed -n '/^.rwx/p'
Se você estiver em um sistema com o comando stat
, há outra maneira de resolver o problema:
for f in *
do
stat -c "%a" "$f" | grep -q ^7 && printf "%s\n" "$f"
done
É perigoso confiar na saída de ls
; considere alguém que criou um arquivo como este:
touch $'foo\n-rwx some file'
... que criará uma linha separada na saída ls
que (falsamente) corresponde à expressão regular. Usar um shell glob ( *
) evita esse problema.
No entanto, outra maneira é usar find
:
find . ! -name . -prune -perm -700 -ls