gpt4 book ai didi

linux - bash 将日志文件复制到单独的目录中

转载 作者:太空宇宙 更新时间:2023-11-04 12:13:22 26 4
gpt4 key购买 nike

我不是 bash 专家,但我尝试解决这个问题:

  1. 我有很多文件*.log,我不知道创建日期,
  2. 我需要将它们复制到名为 $date_when_was_file_created 的单独目录中,例如。创建的文件 2017-01-12 必须移动到名为 2017-01-12
  3. 的目录

2017-02-12 创建的文件必须移动到名为 2017-02-12 的目录

所以我有:

#!/bin/bash
dirs=`ls -la -F --full-time *.LOG | awk '{print $6}'`
filedate=`ls -la -F --full-time *.LOG | awk '{print $6}'>dat`

mkdir $dirs

for data in `cat dat`
do echo " ther are file to be copied:--> `ls -la -F --full-time *.LOG | awk '{print $6 " " $9}' | grep $data | awk '{print $2}'` "
if [[ $data == $dirs ]];
then cp `ls -la -F --full-time *.LOG | awk '{print $6 " " $9}' | grep $data | awk '{print $2}'` $dirs
fi
done

但是不行,意思是创建目录,但是不复制文件,为什么?我不知道……有什么建议吗?

最佳答案

POSIX shell 和 bash 都提供参数扩展 来修剪字符串的一部分。 stat 实用程序可以提供完整的创建时间(包括小时、分钟、秒...)。只需使用 stat 函数并从保留日期的 stat 返回的字符串创建时间中删除时间。然后只需使用日期创建一个目录并将您的日志文件移动到其中。例如

for file in *.log                   ## loop over log files
do
ctime=$(stat -c%y "$file") ## get full create time
cdate="${ctime%% *}" ## extract YYYY-MM-DD date
mkdir -p "$cdate" ## create dir if it doesn't exist
mv "$file" "$cdate" ## move log to directory
done

仔细阅读,如果您还有其他问题,请告诉我。

关于linux - bash 将日志文件复制到单独的目录中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48183015/

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