Использование sed для очистки длинных путей в файлах журнала

md5sum не будет принимать за вход каталог, однако

 tar cf - FOO | md5sum

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

Вы можете подумать об использовании :

 find FOO -type f -exec md5sum {} \;  > FOO.md5

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

2
07.12.2017, 02:52
1 ответ

Чтобы использовать переменные bash в сценарии sed, вам нужно выйти из одинарной кавычки, добавить переменную в двойные кавычки и вернуться к одинарной кавычке для sed.

Пример ниже:

DAY1=$(date -d "+1days" +%m%d%Y)
DAY2=$(date -d "+2days" +%m%d%Y)
DAY3=$(date -d "+3days" +%m%d%Y)
sed -n -E -e '/\s\s\s*'"($DAY1|$DAY2|$DAY3)"'/p' $file
#or
sed -n -E -e ';\s\s\s*'"($DAY1|$DAY2|$DAY3)"';p' $file
1
27.01.2020, 21:58

Теги

Похожие вопросы