По умолчанию Ack ищет шаблон во всех недвоичных файлах ниже текущего каталога.
Я полагаю, что более старые версии Ack перерыли бы двоичные файлы при передаче их --binary
флаг. Этот флаг был удален все же. Вы можете использовать grep вместо этого.
grep -ar 'foo' .
Вы можете просто использовать обычный цикл с [-E
и $ {xxx% .pdf}
, чтобы проверить и построить имена файлов. Это читает пути на стандартном входе, по одному в строке:
while read path
do
[ -e "${path%.pdf}.tex" ] || echo "$path"
done
«$ {путь% .pdf}»
расширяется до $ PATH
с «.pdf», выделенным от конца, а затем мы может поставить «.tex» на конец напрямую. Если это -E
xist, тогда мы ничего не делаем, а иначе ( ||
) он распечатывает путь к PDF. Вы могли бы поставить более сложную логику и поведение там, если вы хотите.
Обычные оговорки о значении IFS
и имена файлов, содержащих Newlines, и т. Д., Применяют, но если предполагают, что у вас ничего необычного происхождения на этом все работает прямо.