Поскольку вы не выполняете рекурсивный поиск, вам не нужно использовать find
, если только вы не хотите включать только каталоги, а не символические ссылки на каталоги. Предполагая, что нет никаких каталогов, чье имя начинается с точки (если есть, используйте for x in .*/ */; do …
), следующее будет искать имена всех каталогов и символические ссылки на каталоги в текущем каталоге:
for x in */; do grep -F "GET /${x%/}" /var/log/apache2/blah.com; done
Если вы выполняете рекурсивный поиск, вы можете избежать ведущей точки, выполняя поиск по *
а не по .
(то же самое замечание как выше относительно имен, начинающихся с точки).
find * -type d -exec grep -F "GET /${x%/}" /var/log/apache2/blah.com
Другая возможность заключается в постобработке вывода find
. Это особенно полезно в сочетании со способностью grep искать несколько разделенных новой строкой шаблонов.
grep -F "$(find . -type d | sed -e 's!^\.!GET !')" /var/log/apache2/blah.com
Обратите внимание, что во всех случаях вы предполагаете, что в именах каталогов нет символов, которые могли бы быть экранированы в журнале Apache. Это решаемо с помощью немного дальнейшей постобработки результатов find
.