Вы можете попробовать что-то вроде этого:
grep "https:" file.txt | xargs -I {} curl -I -L -s -o /dev/null -w "%{url_effective},%{response_code}" {}
Мне интересно, действительно ли ваш grep
захватывает весь URL, так как вы использовали параметр -o
. Вы тестировали только команду grep
?
Обратите внимание, что в этом примере я добавил параметр -L
для автоматического отслеживания перенаправлений, и я использую переменные cURL для получения последнего ответа код (%{response_code}
) и окончательный URL (%{url_effective}
) после перенаправления. Но если вы хотите, вы можете показать исходный URL из файла, а не окончательный URL, как показано curl
.
В большинстве случаев переход на domain.com подразумевает перенаправление на www.domain.com. Таким образом, первый запрос возвращает код ответа 301 или 302, а второй запрос возвращает 200 (если все идет хорошо). На неправильно настроенных веб-сайтах может быть несколько перенаправлений и даже петли перенаправления. Поэтому нас обычно интересует последний код ответа.
Затем, используя xargs
, вы можете добавить параллельную обработку. Я предполагаю, что это то, что вы имели в виду, так как сказали, что у вас большой файл.