Вы можете добавить задание cron
на каждый сервер, чтобы каждое утро находить и удалять старые резервные копии:
30 02 * * * /usr/bin/find /mybackup/ontape_tmp_backup -type f -mtime +14 -print -delete
Эта запись cron
будет выполнять команду find
каждое утро в 02 :30. Команда find
находит в каталоге все файлы старше 14 дней и печатает имя файла (который будет зарегистрирован ), и удалит файл.
Вы должны удалить разделитель m//
, поэтому:
grep -P '(?s)##\s\[v0.0.1].+?(?=---)' CHANAGELOG.md
Но grepне подходит для многострочного -режима режима по умолчанию, как в вашем фрагменте regex101.
Итак, perl на помощь:
perl -0 -lne 'print $& if m/(?s)##\s\[v0.0.1].+?(?=---)/' file
## [v0.0.1]
### Added
- Initial Commit/Release
Здесь я вижу две основные проблемы::
прилагаемые m/
и /
являются регулярными выражениями разделителями-они не должны включаться как часть самого регулярного выражения.
grep
по умолчанию ориентирован на строку -, поэтому на самом деле не выполняет многострочное сопоставление. По крайней мере, в GNU grep вы можете использовать разграничение нулевого байта, чтобы запутать его, добавив флаг -Z
.
Так например
$ grep -zPo '(?s)##\s\[v0.0.1].+?(?=---)' CHANGELOG.md
## [v0.0.1]
### Added
- Initial Commit/Release
Для многострочного сопоставления можно использовать pcregrep
, если он доступен для вашей платформы, например.
pcregrep -Mo '(?s)##\s\[v0.0.1].+?(?=---)' CHANGELOG.md