Як знайти файл в Linux на основі тексту, який я знаю, що він містить?


4

Як я можу знайти всі файли в каталозі / home / user / example, які містять "деякий текст" в Linux. Я використовую Ubuntu 9.10.

Відповіді:


6

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

find / home / user / example -type f -exec grep -i "деякий текст" {} +

-iПерехід до Grep буде використовувати регістронезавісімий метод пошуку. Це буде повільніше, але це корисно, якщо ви не знаєте точного випадку слів. Ви можете зняти вимикач, якщо знаєте, який належний випадок, щоб прискорити справи.


Я вважаю, що вам потрібно додати -Hпараметр grep; інакше ім'я файлу не відображатиметься, буде відповідати лише рядок тексту, який відповідає.
вибагливий

Це показує обоє для мене
Джон Т

Це повинен бути +знак в кінці. Чи гарантує це те, що grepбуде виконано лише один раз усі результати? Я зазвичай закінчується execз ;якої буде виконуватися один раз в Grep результат.
витончений

1
Ви маєте рацію. +Чи не відгалузиться , як \;волі.
Джон Т

2
grep -r "some text" /home/user/example

Буде повторно через усі підпапки, які шукають рядок.


0

Якщо ви не переживаєте про повторне введення в підкаталоги,

grep -l "some text" *

Виводить лише імена файлів, а не контекст, у якому відображається збіг.


що з прихованими файлами?
Джон Т

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