Erro ao usar o sed

0

Estou tentando escrever este comando no UNIX:

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

Mas recebo o seguinte erro:

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

Estou tentando imprimir os arquivos / dirs em que o usuário tem todas as permissões (rwx)

    
por M.T 10.05.2017 / 16:59

3 respostas

3

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
    
por 10.05.2017 / 17:10
0

Para o seu problema específico , considere usar

find . -perms 700 -maxdepth 1 -ls

ou

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

Referência .

    
por 10.05.2017 / 17:26
-1

Você quer executar isso:

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

n - > Imprime apenas dados correspondentes

^. rwx - > Começando com qualquer caractere, seguido por rwx.

p - > Imprima os dados

    
por 10.05.2017 / 17:14

Tags