Что означает ^ d в ls -l | grep ^ d?


13

Когда я делаю ls -l | grep ^dэто перечисляет только каталоги в текущем каталоге.

То , что я хотел бы знать, что делает каретку ^в ^dсреднем?


Дополнительную информацию можно найти в регулярных выражениях или на этой странице об использовании регулярных выражений в grep: robelle.com/smugbook/regexpr.html
Trey

Это работает, но неоптимально. Рассмотрим ls */вместо этого, который будет работать с длинным листингом ( ls -l) или без него и без необходимости grep(и, следовательно, очень немного быстрее) и с меньшей вероятностью (чем ls -l *) столкнуться с слишком долгой проблемой списка аргументов (поскольку он помещает в команду только каталоги) линия). Конечно, find . -maxdepth 1 -type dэто даже лучше, так как это совсем не загромождает вашу командную строку.
Адам Кац

Ответы:


21

Ответ Энди правильный, как видно из справочной страницы:

Закрепление

Символ каретки ^ и знак доллара $ являются метасимволами, которые соответственно соответствуют пустой строке в начале и конце строки.

Причина, по которой он работает, - -lфлаг, lsзаставляющий его использовать формат длинного списка. Первое, что показано в каждой строке, - это доступные пользователю права доступа к файлу, а первый символ - dдля каталога или -для файла.


14

Это карета, а не морковка. Это означает «начало линии». Grep соответствует только строкам, которые начинаются с "d".

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.