假设某些日志的轮换大小为50MB。 我做了' grep'一些字符串和我的字符串存在于日志文件log_3中,我希望在将log_3旋转(重命名)到log_4之前复制它的内容。 请建议如何在旋转之前备份log_3的内容。 我只需要log_3的内容。我不想像我复制log_3(通过cp -p log_3 log_3_backup),但到那时日志被轮换,现在log_3_backup包含log_2的内容。我们有什么办法可以避免这种情况。在自动化项目上工作我需要一个解决方案。非常感谢您提出的建议。您可以共享python或shell脚本。
答案 0 :(得分:1)
您可以获取重命名时不会更改的文件inode编号,然后按该名称引用该文件
for f in *.log; do
# get inode of file
iname=$(ls -i $f)
# test file contents for pattern presence
if grep -q 'some pattern' $f; then
# the file contains the searched pattern, let's do something
# find by inode number and move it
find -inum $iname -exec mv {} {}.bak ';'
fi
done
也许不再需要备份文件了,让我们再试一次
find -inum $iname -print0 | xargs -r0 grep 'some pattern'