Использовать locate
Причина - это locate
использует базу данных всех существующих каталогов и файлов, это было уже создано точно так же, как Вы вообразили!
http://linux.about.com/od/commands/l/blcmdl5_locatedb.htm
В некотором наборе (и изменяемый) интервал, который делают прогоны задания, сканирует файловую систему и затем создает базу данных с ним. Затем эта база данных (locatedb), с ее соответствующими индексами locate
команда идет вразрез вместо того, чтобы сканировать через Ваш жесткий диск в той точке.
Таким образом, позитивный аспект - то, что это очень быстро по сравнению со сканированием жесткого диска. Оборотная сторона - то, что определять местоположение база данных (locatedb) не 'жива', так может только использоваться для файлов, которые существовали 'с' последнего сканирования.
Обновить locatedb, теперь выполненный updatedb
(или sudo updatedb
при необходимости)
btw я просто работал sudo updatedb
локально и потребовалось 3 1/2 секунды! У меня есть 31 000 файлов.
Используйте другой локатор IP, чем ifconfig.me, который предоставляет ту информацию как:
Не доступный больше с 09.03.2015
curl -s 'http://geoiplookup.net/geoapi.php?output=countrycode'
или:
curl -s 'http://geoiplookup.net/geoapi.php?output=country'
(см. API для деталей),
или:
curl -s http://whatismycountry.com/ |
sed -n 's|.*,\(.*\)</h3>|\1|p'
или:
curl -s http://whatismycountry.com/ |
sed -n 's|.*> *\(.*\)</h3>|\1|p'
для большей точности, или:
curl -s http://whatismycountry.com/ |
sed -n 's/.*Coordinates \(.*\)<.*/\1/p'
для координат.
Это делает предположения на форматировании HTML страницы. Таким образом, это может прекратить работать, если они решают изменить тот формат в будущем.
Можно получить несколько рядом с запросами общественности whois базу данных. Вероятно, будет несколько трудно к "productify" обработать каждый возможный случай, но разумное приближение могло бы быть:
$ whois a.b.c.d | grep -iE ^country:
где a.b.c.d
рассматриваемый IP-адрес.
whois
часто устанавливается по умолчанию, таким образом, это встречает разумную интерпретацию Ваш, "Я предпочитаю не устанавливать любой пакет для того, чтобы сделать это" чтение как, "Я не хочу устанавливать дополнительное программное обеспечение".
Распечатать только значение country
поле и сила это к верхнему регистру только (для создания сравнений легче, например), можно сделать что-то как:
$ whois a.b.c.d | awk -F':[ \t]+' 'tolower($1) ~ /^country$/ { print toupper($2) }'
whois $(curl ifconfig.me) | grep -iE ^country: | awk '{print $2}'
дает мне, что я хочу;спасибо!
– Radu Rădeanu
18.07.2013, 14:32
whois $(curl ifconfig.me) | awk 'tolower($1) ~ /^country:/ { print $2 }'
вместо этого.
– a CVn
18.07.2013, 14:39
ipinfo.io имеет хороший JSON API для использования из командной строки:
$ curl ipinfo.io
{
"ip": "X.X.X.X",
"hostname": "No Hostname",
"city": "Hanoi",
"region": "Ha Noi",
"country": "VN",
"loc": "21.0333,105.8500",
"org": "AS18403 The Corporation for Financing & Promoting Technology"
}
curl --silent https://whatismycountry.com/ grep --only-matching --perl-regexp 'Your Country is \K[^<]+'
делает. – Fabby 26.04.2018, 17:17