Вы ищете флаг -N
для wget:
Wget will ask the server for the last-modified date. If the local file has the same timestamp as the server, or a newer one, the remote file will not be re-fetched. However, if the remote file is more recent, Wget will proceed to fetch it.
Попробуйте экспортировать $1
в свой скрипт.
#!/usr/bin/env bash
pattern=$1
export pattern
find. -name '*.pdf' -exec sh -c 'pdftotext "{}" - | grep --with-filename --label="{}" --color "$pattern"' \;
Но предлагаю переписать на
#!/usr/bin/env bash
pattern=$1
export pattern
find. -name '*.pdf' -exec sh -c 'for f; do
pdftotext "$f" - | grep --with-filename --color "$pattern"
done' _ {} +
Может быть, добавить --label=$pattern
также
Вам необходимо передать параметр $0
в качестве имени оболочки для сообщений об ошибках и позиционный параметр $1
в вызов sh -c '...'
:
#!/bin/bash
find. -name '*.pdf' -exec sh -c '
pdftotext "{}" - | grep --with-filename --label="{}" --color "$1"
' sh "$1" \;
Здесь sh
используется, поскольку$0
(может быть любым именем )и исходный аргумент "$1"
передается как позиционный параметр $1
.
Если у вас установлен pdfgrep
, вам не понадобится преобразование pdf в текст и дополнительная оболочка:
find. -name '*.pdf' -exec pdfgrep -H "$1" {} \;