Próbuję wyszukać wiersze zaczynające się od „1” za pomocą
ls -1 | grep ^1*
ale zwraca wiersze, które nie zaczynają się od 1. Czego tu brakuje?
Próbuję wyszukać wiersze zaczynające się od „1” za pomocą
ls -1 | grep ^1*
ale zwraca wiersze, które nie zaczynają się od 1. Czego tu brakuje?
Odpowiedzi:
Chociaż to nie odpowiada na twoje pytanie, jest to lepsze rozwiązanie tego, co wydaje się twoim celem:
ls -ld 1*
Możesz użyć globu powłoki, aby wyświetlić listę wszystkich plików, które zaczynają się od 1
. Zauważ, że *
ma inne znaczenie w globowaniu powłoki niż wyrażenia regularne.
*
jest symbolem wieloznacznym oznaczającym „0 lub więcej dowolnych znaków”. Znaczenie wyrażenia regularnego wyjaśniono w odpowiedzi otokana.
^ 1. * dopasowuje całą linię, lub tak jak powiedziano powyżej, ^ 1 ma łańcuch zawarty w linii.
różne style wyrażeń regularnych używają różnych symboli reprezentujących znaki, niektóre opcje określają, który styl chcesz. a różne opcje określają, czy chcesz dopasować cały wiersz, czy tylko jego część, czy cały wpis jako jeden ciąg.
ls
wyjście, napotkasz problemy, jeśli nazwy plików zawierają dziwne znaki, takie jak znaki nowej linii ... Wiele innych poleceń (w jakiś sposób niels
, przynajmniej wersja, którą muszę sprawdzić) mają opcję rozdzielania wartości zerowej, którą następnie można bezpiecznie przetwarzać za pomocągrep -z