O que ^ d significa em ls -l | grep ^ d?

13

Quando eu faço ls -l | grep ^d, lista apenas diretórios no diretório atual.

O que eu gostaria de saber é o que faz o acento circunflexo ^em ^dmédia?

Deslizar
fonte
Para obter informações relacionadas, procurar expressões regulares ou check-out desta página sobre o uso de expressões regulares no grep: robelle.com/smugbook/regexpr.html
Trey Hunner
Isso funciona, mas é subótimo. Considere ls */, em vez disso, que funcionará com ou sem a lista longa ( ls -l) e sem a necessidade grep(e, portanto, é muito mais rápida) e é menos provável (que ls -l *) correr para um problema muito longo da lista de argumentos (uma vez que coloca apenas diretórios no comando linha). Obviamente, find . -maxdepth 1 -type dé ainda melhor, pois não atrapalha sua linha de comando.
Adam Katz

Respostas:

21

A resposta de Andy está correta, como pode ser visto na página do manual:

Ancoragem

O sinal de intercalação ^ e o cifrão $ são metacaracteres que correspondem respectivamente à sequência vazia no início e no final de uma linha.

O motivo pelo qual ele funciona é o -lsinalizador para lsque ele use o formato de listagem longa. A primeira coisa mostrada em cada linha são as permissões legíveis por humanos para o arquivo, e o primeiro caractere é dpara um diretório ou -para um arquivo

Michael Mrozek
fonte
14

Isso é um sinal de intercalação, não uma cenoura. Significa "começo da linha". O grep está correspondendo apenas às linhas que começam com "d".

Andy Lester
fonte