无畏-将来

纵有疾风起,人生不言弃

博客园 首页 联系 订阅 管理

143 Linux 批量修改文件夹所有文件指定内容并还原文件修改时间

#!/bin/bash
function log_date()
{
    # 获取文件的原始修改时间,并写入同级文件夹下cos_log_date.txt文件
    if [ -d "$1" ]; then
        (
            cd $1
            ls -al --time-style '+%Y%m%d%H%M.%S' |grep "cos.log" |awk -F " " '{print $6}' > ../../cos_log_date.txt
        )
    fi
}

function log_sed()
{
    if [ -d "$1" ]; then
        (
            cd $1
            local log_file=$(ls -l |grep "cos.log" |awk -F " " '{print $9}')
            local log_num=$(echo "${log_file}" |wc -l)
            local log_index=1

            if [ ${log_num} -ge 1 ]; then
                for log_cos in $(echo "${log_file}"); do
                    if [ -s ${log_cos} ]; then
                        # 遍历日志并修改对应日志内容
                        sed -i 's/Blending\ Path\ Failure.*/robot\ axis\ number\ is\ :6/g' ${log_cos}
                        sed -i 's/\[E/\[I/g' ${log_cos}
                        sed -i 's/\[W/\[I/g' ${log_cos}
                        # 修改日志后,把文件原始的修改时间重新变更
                        local date_c=$(sed -n "${log_index}p" ../../cos_log_date.txt)
                        touch -t ${date_c} ${log_cos}
                        echo -e "${log_index} | ${date_c} ${log_cos} done\n"
                    fi
                    let log_index++
                done
            fi
        )
    fi
}

log_date $1
log_sed $1
posted on 2022-12-17 14:31  无畏-将来  阅读(282)  评论(0编辑  收藏  举报