Que signifie ^ d dans ls -l | grep ^ d?

13

Lorsque je le fais, ls -l | grep ^dil répertorie uniquement les répertoires du répertoire actuel.

Ce que je voudrais savoir est ce que fait le caret ^en ^dmoyenne?

Glide
la source
Pour des informations connexes, recherchez les expressions régulières ou consultez cette page sur l'utilisation des expressions régulières dans grep: robelle.com/smugbook/regexpr.html
Trey Hunner
Cela fonctionne, mais n'est pas optimal. Considérez ls */plutôt, qui fonctionnera avec ou sans la longue liste ( ls -l) et sans avoir besoin grep(et est donc très légèrement plus rapide) et est moins susceptible (que ls -l *) de se retrouver dans une liste d'arguments problème trop long (car il met juste des répertoires dans la commande ligne). Bien sûr, find . -maxdepth 1 -type dc'est encore mieux, car cela n'encombre pas du tout votre ligne de commande.
Adam Katz

Réponses:

21

La réponse d'Andy est correcte, comme le montre la page de manuel:

Ancrage

Le curseur ^ et le signe dollar $ sont des méta-caractères qui correspondent respectivement à la chaîne vide au début et à la fin d'une ligne.

La raison pour laquelle cela fonctionne est la -l drapeau lsqui lui fait utiliser le format de liste longue. La première chose affichée dans chaque ligne est les autorisations lisibles par l'homme pour le fichier, et le premier caractère est soit dpour un répertoire ou -pour un fichier

Michael Mrozek
la source
14

C'est un caret, pas une carotte. Cela signifie «début de la ligne». Le grep ne correspond qu'aux lignes commençant par "d".

Andy Lester
la source