6

У меня есть ряд файлов в каталоге, которые мне нужно выполнить с помощью сценария. Когда действие выполнено, я хочу сохранить журнал о том, что файл был обработан, чтобы при следующем запуске сценария он не пытался выполнить действие снова.

Допустим, я могу найти все файлы, которые должны быть обработаны следующим образом:

for i in `find /logfolder -name '20*.log'` ; do
    process_log $i
    echo $i >> processedlogsfile
done

Итак, у меня есть файл, содержащий журналы, которые я обработал, и моей целью было бы изменить цикл for таким образом, чтобы эти обработанные журналы не обрабатывались во второй раз.

Выполнение ручного сканирования каждый раз кажется неэффективным, особенно когда количество обрабатываемых файлов увеличивается:

 if grep -iq "$i" processdlogfiles ; then continue; fi

Было бы хорошо, если бы эти файлы можно было исключить при настройке цикла for.

Обратите внимание, что рассматриваемая ОС является производным от Linux, управляющим устройством, с ограниченным набором инструментов (например, без команды attr ) и, следовательно, без возможности установки дополнительных утилит (ну, это возможно, но не вариант). Однако наиболее распространенные команды оболочки bash доступны.

Кроме того, имена файлов и местоположения обработанных файлов должны оставаться там, где они есть - их нельзя изменить, чтобы отразить их обработанный статус.

2 ответа2

1

Добавить | fgrep -vf processedlogfiles для вашей команды поиска

0

Как насчет разделения вещей по папкам ... Новые файлы в одном и обработанные файлы в другом. Затем "обработка" включает в себя перемещение файлов.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .