Знайдіть рядок лише у певному файлі всередині підкаталогів


10

Скажімо, мені потрібно знайти функцію GetTypes()у всіх вихідних файлах C # ( .cs) в каталогах / підкаталогах.

Я звик grep -rn GetTypes *.cs, але я отримав помилку із grep: *.cs: No such file or directory. Мені довелося користуватися grep -rn GetTypes *, але в цьому випадку він показує всі файли не *.csтільки.

Яку команду мені потрібно використовувати, щоб знайти рядок лише у .csфайлах?


Відповіді:


12

Якщо ваша оболонка не є ≥4, shopt -s globstarвведіть свою ~/.bashrc. Якщо ваша оболонка zsh, ви добре. Тоді можна бігти

grep -n GetTypes **/*.cs

**/*.csозначає всі файли, що відповідають *.csпоточному каталогу або в його підкаталогах, рекурсивно.

Якщо ви не використовуєте оболонку, яка підтримує, **але ваша підтримка grep --include, ви можете зробити рекурсивний греп і grepзапропонувати враховувати лише файли, що відповідають певним шаблонам. Зверніть увагу на лапки навколо шаблону імені файлу: він інтерпретується grep, а не оболонкою.

grep -rn --include='*.cs' GetTypes .

Використовуючи лише портативні інструменти (деякі системи взагалі не мають grep -r), використовуйте findдля частини переходу каталогів та grepдля частини пошуку тексту.

find . -name '*.cs' -exec grep -n GetTypes {} +

Для тимчасового сету globstarваріант для поточної Баш 4+ оболонки, використання: shopt -s globstar.
tjanez

8

Ви повинні перевірити біліантний маленький греп / знайти заміну, відомий як ack. Це спеціально налаштування для пошуку через каталоги файлів вихідного коду.

Ваша команда виглядатиме так:

ack --csharp GetTypes

4

Якщо ви використовуєте GNU grep, ви можете вказати, які файли потрібно включити до рекурсивного обходу каталогу:

grep --include '*.cs' -rn GetTypes .

(де останній період позначає поточний робочий каталог як корінь обходу)


4

Я використовую комбінацію знаходження та греп:

find . -name "*.cs" | xargs grep "GetTypes" -bn --color=auto

Тому що findви можете замінити .каталог і видалити, -nameякщо хочете переглянути кожен файл.

Бо grep, -bnнадрукує позицію та номер рядка та --colorдопоможе вашим очам, виділивши те, що ви шукаєте.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.