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