Я намагаюся шукати рядки, які починаються з "1", використовуючи
ls -1 | grep ^1*
але він повертає рядки, які не починаються з 1. Що я тут пропускаю?
Я намагаюся шукати рядки, які починаються з "1", використовуючи
ls -1 | grep ^1*
але він повертає рядки, які не починаються з 1. Що я тут пропускаю?
Відповіді:
Хоча це не відповідає на ваше запитання, це краще рішення того, що представляється вашою метою:
ls -ld 1*
Ви можете використовувати глобул оболонки, щоб перелічити всі файли, з яких починається 1
. Зауважте, що *
в глобулі оболонки є інше значення, ніж регулярні вирази.
*
є підстановка, що означає "0 або більше будь-якого символу". Значення регулярного вираження пояснюється у відповіді otokan.
^ 1. * відповідає цілому рядку, або так само, як сказано вище, ^ 1 отримав рядок, що міститься у рядку.
різні стилі регулярного вираження використовують різні символи, що представляють символи, деякі параметри вказують, який стиль ви хочете. і різні параметри вказують, чи потрібно відповідати цілому рядку, або лише його частині, або всьому вводу як один рядок.
ls
виводу, ви зіткнетесь з проблемами, якщо файли містять якісь дивні символи, такі як нові рядки ... Багато інших команд (якось ніls
, принаймні не версія, яку я повинен перевірити) є можливість дати нульовий розділений вихід, який ви можете потім безпечно обробитиgrep -z