Я использую человечность Linux, и я использую удар от с эмулятором терминала каждый день для многих задач.
Я хотел бы знать, как найти строку или подстроку в файле, который является в рамках конкретного каталога.
Если я был, знал файл, который содержал мою целевую подстроку, я буду просто кошка файл и передавать его по каналу через grep, таким образом:
cat file | grep mysubstring
Но в этом случае, противная подстрока могла быть где угодно в рамках известного каталога.
Как я выслеживаю свою подстроку?
find -type f | xargs grep mysubstring
Эти команды (find
, xargs
и grep
) имейте много опций, таким образом, можно настроить эту операцию существенно.
скажите, что я хочу найти все файлы кода Python, которые содержат текст "Wiki" в соответствии с каталогом "~ / проекты", вот сценарий:
grep -lir "wiki" ~/projects/**/*.py
скорректируйте сценарий к своим конкретным требованиям.
Неважно, как Вы делаете это, не делайте файлов кошки в grep. Ваша исходная версия
cat file | grep mysubstring
более правильно сделан как
grep mysubstring file
Если Вы хотите найти все файлы с определенной Строкой рекурсивными от "текущего" dir, используйте:
find . -type f -exec grep -l mysubstring {} \;
(должен работать над большинством *, отклоняют'),