¿Qué significa ^ d en ls -l | grep ^ d?

13

Cuando lo hago ls -l | grep ^d, solo enumera los directorios en el directorio actual.

Lo que me gustaría saber es lo que hace el símbolo de intercalación ^en la ^dmedia?

Deslizamiento
fuente
Para obtener información relacionada, busque expresiones regulares o consulte esta página sobre el uso de expresiones regulares en grep: robelle.com/smugbook/regexpr.html
Trey Hunner
Esto funciona, pero es subóptimo. Considere ls */, en cambio, lo que funcionará con o sin la lista larga ( ls -l) y sin necesidad grep(y, por lo tanto, es un poco más rápido) y es menos probable (que ls -l *) encontrarse con un problema de lista de argumentos demasiado largo (ya que solo coloca directorios en el comando línea). Por supuesto, find . -maxdepth 1 -type des aún mejor, ya que no satura tu línea de comando en absoluto.
Adam Katz

Respuestas:

21

La respuesta de Andy es correcta, como se ve en la página del manual:

Anclaje

El símbolo de intercalación ^ y el signo de dólar $ son metacaracteres que coinciden respectivamente con la cadena vacía al principio y al final de una línea.

La razón por la que funciona es la -lbandera que lshace que use el formato de lista larga. Lo primero que se muestra en cada línea son los permisos legibles por humanos para el archivo, y el primer carácter de eso es dpara un directorio o -para un archivo

Michael Mrozek
fuente
14

Eso es una preocupación, no una zanahoria. Significa "comienzo de la línea". El grep solo coincide con líneas que comienzan con "d".

Andy Lester
fuente