Co oznacza ^ d w ls -l | grep ^ d?

13

Kiedy to robię ls -l | grep ^d, wyświetla tylko katalogi w bieżącym katalogu.

Co chciałbym wiedzieć, co robi daszek ^w ^dśredniej?

Poślizg
źródło
Aby uzyskać podobne informacje, wyszukaj wyrażenia regularne lub sprawdź tę stronę na temat używania wyrażeń regularnych w grep: robelle.com/smugbook/regexpr.html
Trey Hunner
Działa to, ale nie jest optymalne. Zastanów się ls */zamiast tego, który będzie działał z lub bez długiego listowania ( ls -l) i bez potrzeby grep(a zatem jest bardzo nieznacznie szybszy) i jest mniej prawdopodobne (niż ls -l *), że wpadnie na zbyt długą listę argumentów (ponieważ wstawia do katalogu tylko katalogi linia). Oczywiście find . -maxdepth 1 -type djest jeszcze lepiej, ponieważ w ogóle nie zaśmieca linii poleceń.
Adam Katz

Odpowiedzi:

21

Odpowiedź Andy'ego jest poprawna, jak widać na stronie podręcznika:

Kotwienie

Karetka ^ i znak dolara $ to metaznaki, które odpowiednio pasują do pustego ciągu na początku i na końcu wiersza.

Powodem, dla którego działa, jest -lflaga, która lsużywa formatu długiej listy. Pierwszą rzeczą pokazaną w każdym wierszu są czytelne dla człowieka uprawnienia do pliku, a pierwszy znak to albo ddla katalogu, albo -dla pliku

Michał Mrożek
źródło
14

To jest karetka, a nie marchewka. Oznacza „początek linii”. Grep pasuje tylko do linii rozpoczynających się od „d”.

Andy Lester
źródło