微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

用于将 *.log 文件复制到新目录的 Bash 脚本

如何解决用于将 *.log 文件复制到新目录的 Bash 脚本

在我的文件夹中有这样的不同文件

stats.log
move_2021-05-24.log
sync_2021-05-24.log
application.log

我想将所有 *.log 文件复制到一个特定文件夹。

我当前的脚本看起来像这样,但它不像我想的那样工作。它目前正在移动我认为的所有日志文件,而不仅仅是日期早于今天日期的日志文件

cd /share/CACHEDEV1_DATA/app                 
for file in *.log               
do                                
    day=$(echo ${file} | cut -d"-" -f3)
    Now="$(date +'%d')"

    if [ "$day" != "$Now" ];       
    then
        mv ${file} ~/share/CACHEDEV1_DATA/rclone/logs/    
    fi                            
done     

如果我能得到关于我的脚本需要如何正常工作的建议,我会很高兴。

解决方法

希望您考虑logrotate。它可以满足您的一切需求,甚至更多。

但是,如果您想推出自己的文件,您可以通过以下方法找到早于一天的文件并移动它们。注意:这将覆盖目的地的同名文件。我在 echo 之前添加了一个 mv 语句,以便您看看是否适合您。

find /share/CACHEDEV1_DATA/app -type f -maxdepth 1 -mtime +1d -print0 | \
while read -rd $'\0' file; do
    echo mv "$file" ~/share/CACHEDEV1_DATA/rclone/logs/
done

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。