gpt4 book ai didi

linux - 用于将日志文件复制到单个压缩文件中的 shell 脚本

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:55:15 34 4
gpt4 key购买 nike

我们的嵌入式板“statuslogs”中有一个文件夹,该文件夹包含格式为:daily_status_date_time.log 的日志。

我们需要将特定年份的所有文件放入一个文件中,以便从服务器获取。

我们在脚本中做了以下操作

gzip -c statuslogs/daily_status_2017*.log > status_2017.gz
gzip -c statuslogs/daily_status_2018*.log > status_2018.gz
gzip -c statuslogs/daily_status_2019*.log > status_2019.gz
gzip -c statuslogs/daily_status_2020*.log > status_2020.gz
gzip -c statuslogs/daily_status_2021*.log > status_2021.gz

此逻辑的问题在于它仍会为 2019、2020、2021 年创建 status_*.gz 文件。

我试着写了下面的逻辑

if [ - f statuslogs/daily_status_2017*.log ] 但由于正则表达式可能会失败。而且我没有使用 bash,解释器是 ash。

你能帮我优化一下脚本吗

谢谢你的时间

最佳答案

你有一个语法错误。是-f,不是-f。示例:

if [ -f statuslogs/daily_status_2017*.log ]; then
gzip -c statuslogs/daily_status_2017*.log > status_2017.gz
fi

但是,您可能会遇到“太多参数”错误,如果您有多个匹配文件,就会发生这种情况。所以这会更好:

if find statuslogs/daily_status_2017*.log -mindepth 0 -maxdepth 0|head -n1; then 
gzip -c statuslogs/daily_status_2017*.log > status_2017.gz
fi

最好在到达当前年份时停止循环。例如,

for year in $(seq 2017 $(date +%Y)); do

关于linux - 用于将日志文件复制到单个压缩文件中的 shell 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50035255/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com