Команда является легкой частью, трудная часть имеет доступ к базе данных.
Например, Ubuntu имеет свободную базу данных с инструментальным средством формирования запросов командной строки (geoiplookup
) в geoip-bin
пакете . Но это только показывает информацию о стране и использует помехи (следовательно устаревший) база данных. Этот инструмент может также запросить базу данных MaxMind GeoIP, если у Вас есть подписка там.
Существуют различные базы данных GeoIP, которые можно искать. Они обычно предназначаются, чтобы быть просмотренными через веб-браузер, но можно искать сценарий очистки. Например, вот рубиновый сценарий для получения данных из базы данных MaxMind. Обратите внимание, что очистка может быть против условий предоставления услуг базы данных.
GNU grep позволяет искать рекурсивно через подкаталоги:
grep -r --include='*.h' 'the string' .
grep -r searchpattern /path/to/start/in
Где /path/to/start/in/
может быть просто".
"для текущего каталога.
Нет. find -name \*.h -print0 | xargs -0 grep -l 'the regex'
является столь волшебным, как это добирается.
-r
опция. Никакая потребность в тяжелой артиллерии.
– Gilles 'SO- stop being evil'
14.02.2011, 22:44
xargs
добавляет просто шум. Использовать find -name \*.h -execdir grep -l 'the regex {} +
– user unknown
16.04.2011, 01:47
есть ли какая-либо единственная, встроенная команда, которая работает через это волшебство...?
Чтобы быть педантичными, нет, Вы не можете предположить, что такая команда существует.
Существует много различных реализаций Unix, и у каждого есть его различные причуды. POSIX, общий знаменатель (и самая близкая вещь к стандарту через Нельды) не указывает такую опцию для grep
.
Как упомянуто в других ответах, реализации GNU grep
имеет нестандартную опцию, которая делает то, что Вы хотите. В то время как эта конкретная реализация могла бы быть распространена в системах Linux, Вы не можете принять его доступность ни на каком Unix, даже некоторые системы Linux.
Наконец, я должен упомянуть, что это - философия Unix для одобрения комбинации нескольких примитивных программ по использованию одного большого монолитного исполняемого файла, пытающегося сделать все сразу.
В Вашем случае, проверяя файловую систему и соответствуя regexp в потоке две отдельных задачи. Только нормально рассматривать каждого в отдельной программе.
есть ли какая-либо единственная, встроенная команда, которая работает через это волшебство...?
Чтобы быть педантичными, нет, Вы не можете предположить, что такая команда существует.
Существует много различных реализаций Unix, и у каждого есть его различные причуды. POSIX, общий знаменатель (и самая близкая вещь к стандарту через Нельды) не указывает такую опцию для grep
.
Как упомянуто в других ответах, реализации GNU grep
имеет нестандартную опцию, которая делает то, что Вы хотите. В то время как эта конкретная реализация могла бы быть распространена в системах Linux, Вы не можете принять его доступность ни на каком Unix, даже некоторые системы Linux.
Наконец, я должен упомянуть, что это - философия Unix для одобрения комбинации нескольких примитивных программ по использованию одного большого монолитного исполняемого файла, пытающегося сделать все сразу.
В Вашем случае, проверяя файловую систему и соответствуя regexp в потоке две отдельных задачи. Только нормально рассматривать каждого в отдельной программе.
Чтобы найти строку из заданного каталога, используйте команду ниже
find <fullDirectoryPath> -name '*' -exec grep -l '<StringToFind>' {} \;
Например:
find /apps_bev/apps/xfer/export/02210 -name '*' -exec grep -l '38221000001032' {} \;
*
кому:'*'
: "Заключение в кавычки последнего подстановочного знака необходимо для предотвращения ошибок, когда некоторое имя файла запускается с -" – Michael Mrozek♦ 14.02.2011, 18:07-Msomething
, или к aGREP_OPTIONS
установка. – Gilles 'SO- stop being evil' 14.02.2011, 22:43