读取时间戳文件并创建目录结构取决于时间戳

时间:2017-05-25 09:11:33

标签: linux shell sh

我有年份数据的日志文件,我想在日志文件中读取并获取unix时间戳列并转换为人类可读的时间戳(不是字面上,只是逻辑上)。取决于时间戳。 我想创建一个基于时间的目录结构像这样(2017/05/20/13)(YYYY / MM / DD / HH)并将这些文件复制到相应的目录结构

LANG=C
if [[ -z "$1" ]]
  then
if [[ -p /dev/stdin ]]    # input from a pipe
  then
    read -r p
 else
    echo "No timestamp given." >&2
    exit
 fi
  else
p=$1
fi
awk 'BEGIN {FS=OFS=":"}{$7=strftime("%Y-%m-%d %H:%M:%S",$7)} {print}' 
sample.txt

这是awk命令后的日志文件示例输出,现在我想创建一个文件夹取决于日期和小时。像这样的东西

Input 
counter.txt
28:-58:31147:28:0:0:2017-05-24 15:12:50:3064:0:0:0:103
28:-58:31147:28:0:0:2017-05-24 15:12:50:3064:0:0:0:102
21:-60:17086:28:0:0:2017-05-24 15:12:50:1384:0:0:0:102
10:-64:16651:28:0:0:2017-05-24 16:12:50:656:0:0:0:103

文件夹结构就像      [root @ master 24-05-17] #ls -ltr | grep counter_     -rw-rw-r-- 1位用户user 11974276 5月23日12:32 counter_25.txt     -rw-rw-r-- 1位用户17271141 5月23日13:32 counter_24.txt      -rw-rw-r-- 1位用户16819152 5月23日14:32 counter_23.txt

输出如下:

/2017/05/24/15 - in this folder , we have to seperate the input file and write 
counter_2017_05_24_15.txt 
28:-58:31147:28:0:0:2017-05-24 15:12:50:3064:0:0:0:103
28:-58:31147:28:0:0:2017-05-24 15:12:50:3064:0:0:0:102
21:-60:17086:28:0:0:2017-05-24 15:12:50:1384:0:0:0:102

/2017/05/24/16 in this folder , I want to write the remaining data in another 
new file and store seperately under the folder 
counter_2017_05_24_16.txt
10:-64:16651:28:0:0:2017-05-24 16:12:50:656:0:0:0:103
23:-66:33444:28:0:0:2017-05-24 16:12:50:656:0:0:0:103
10:-64:16651:28:0:0:2017-05-24 16:12:50:656:0:0:0:102

1 个答案:

答案 0 :(得分:0)

而不是:

strftime("%Y-%m-%d %H:%M:%S")

这样做:

strftime("%d/%m/%Y")

现在您有一个DD / MM / YYYY字符串,可以将其用作路径的一部分。