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?


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


14

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

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.