Один из способов приблизиться к этому — настроить файлы временных меток, чтобы ограничить даты, которые вы ищете:
touch -t 201902210000 /tmp/start-time
touch -t 201902212359.59 /tmp/end-time
... а затем запросить find
файлы, которые новее начального -времени, но не новее конечного -времени:
find. -type f -newer /tmp/start-time ! -newer /tmp/end-time
Собираем все воедино:
touch -t 201902210000 /tmp/start-time
touch -t 201902212359.59 /tmp/end-time
find. -type f -newer /tmp/start-time ! -newer /tmp/end-time -name '*.xml' -exec grep JMS111 /dev/null {} +
rm /tmp/start-time /tmp/end-time
Это будет искать файлы в правильном временном интервале с именами, заканчивающимися на .xml
, а затем передать эти имена файлов в grep
, помещая столько, сколько может за проход. Я добавил /dev/null
в качестве «файла» для поиска grep вместе с именами файлов из find
, если они есть. Таким образом, если есть только один совпадающий файл, grep
«принуждается» сообщать о совпадающем имени файла (, поскольку /dev/null никогда не совпадет, об этом не будет сообщено ).
На выходе будут имена файлов и соответствующие строки из этих файлов.
Docker не указывает способ незаметно получить блочное устройство, которое используется для операций чтения/записи.
Успешное обходное решение: