Как я могу создавать файлы с увеличивающимися числами в именах при каждом запуске скрипта? - PullRequest
0 голосов
/ 06 марта 2020

Мне нужно создать файл, имя которого увеличивается при каждом запуске

sh SyslogClient.sh > syslogExport.log

в следующий раз, когда файл будет syslogExport1.log, syslogExport2.log et c.

Как я могу это сделать?

Ответы [ 3 ]

0 голосов
/ 07 марта 2020

вы можете использовать что-то вроде этого:

sh SyslogClient.sh > syslogExport$(( $(find . \( -name . -o -prune \) -type f -name 'syslogExport*.log' | sort -V | tail -1 | tr -cd 0-9) + 1)).log
  • \( -name . -o -prune \) - не спускаться в подкаталоги (см. Ограничить POSIX find для указания c глубина? )
  • -type f - только поиск файлов
  • sort -V - сортировка по версии: Numberri c сортировка, но обрабатывает также символы впереди
  • tail -1 - получить последнюю строку (максимальное число)
  • tr -cd 0-9 - сохранить только цифры
  • $(...) - захватить результат команды
  • $(( ... + 1)) - добавить 1 к максимальное число
0 голосов
/ 07 марта 2020

Если вас не беспокоит то, что числа являются последовательными (то есть: 1, 2, 3, 4, ...), а только тем, что они увеличиваются, вы можете использовать команду date:

SyslogClient.sh > syslogExport$(date +"%y%m%d%H%M%S").log

Это создаст файлы, такие как syslogExport200306155325.log, syslogExport200306155700.log, et c.

0 голосов
/ 06 марта 2020

Вы можете добавить эти строки в начало вашего скрипта SyslogClient. sh:

# if logfile exists
if [ -f syslogExport.log ]
then
# count number of logfiles
count=`ls syslogExport*.log | wc -w`
# rename syslogExport.log file
mv syslogExport.log syslogExport${count}.log
fi

Это сохранит текущий журнал в syslogExport.log и сохранит предыдущие журналы в syslogExport1.log, syslogExport2. .log et c

Надеюсь, это поможет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...