shell 匹配 三个文件夹下 "同一时刻"的文件

#!/bin/bash
##下面三个txt用来是所有的lidar,vis,radar路径
ls -R /apollo/data/xuehui_test/demo/demo_pcd/*/*/*.jpg > /apollo/data/xuehui_test/jpg_001_list.txt
ls -R /apollo/data/xuehui_test/demo/demo_vis/*.jpg > /apollo/data/xuehui_test/jpg_002_list.txt
ls -R /apollo/data/xuehui_test/demo/demo_radar/long_range/*.jpg > /apollo/data/xuehui_test/jpg_003_list.txt

#路径大概长这个样子
#/apollo/data/xuehui_test/demo/demo_radar/long_range/1563936013.222200.jpg
#/apollo/data/xuehui_test/demo/demo_radar/long_range/1563936013.309112.jpg

##下面三个txt用来存放匹配上的路径
touch /apollo/data/xuehui_test/jpg_lidar_matched_list.txt && rm /apollo/data/xuehui_test/jpg_lidar_matched_list.txt #被radar时间戳匹配上的lidar
touch /apollo/data/xuehui_test/jpg_vis_matched_list.txt && rm /apollo/data/xuehui_test/jpg_vis_matched_list.txt #被radar时间戳匹配上的vis
touch /apollo/data/xuehui_test/jpg_radar_not_matched_list.txt  && rm /apollo/data/xuehui_test/jpg_radar_not_matched_list.txt #找不到合适lidar时间戳的radar

#阈值
Time_Diff=0.1

for line_radar in `cat /apollo/data/xuehui_test/jpg_003_list.txt`
do
    flag_deleted=1 

    radar_time_stamp=`basename $line_radar .jpg`

#匹配合适时间戳的lidar
     for line_lidar in `cat /apollo/data/xuehui_test/jpg_001_list.txt`
     do 
         lidar_time_stamp=`basename $line_lidar .jpg`
         time_diff=`echo "$radar_time_stamp-$lidar_time_stamp" |bc`
         # echo $time_diff

         if [ `echo "$time_diff >= -$Time_Diff" |bc` -eq 1 ] && [ `echo "$time_diff <= $Time_Diff" |bc` -eq 1 ]; then
             echo $time_diff
             echo $line_lidar >> /apollo/data/xuehui_test/jpg_lidar_matched_list.txt
             flag_deleted=0 #只要匹配上,flag就等于零
             break  #找到第一个合适的时间戳之后就退出循环,等下一个radar时间戳.
         fi
     done
     
    if [ "$flag_deleted" -eq 1 ]; then
        echo $line_radar >> /apollo/data/xuehui_test/jpg_radar_not_matched_list.txt #radar 没有找到合适的lidar时间戳
        flag_deleted=1 #这个flag=1是为vis的匹配做准备的.
    fi

##匹配合适时间戳的vis
    for line_vis in `cat /apollo/data/xuehui_test/jpg_002_list.txt`
    do 
        vis_time_stamp=`basename $line_vis .jpg`
        time_diff=`echo "$radar_time_stamp-$vis_time_stamp" |bc`
        # echo $time_diff

        if [ `echo "$time_diff >= -$Time_Diff" |bc` -eq 1 ] && [ `echo "$time_diff <= $Time_Diff" |bc` -eq 1 ]; then
            echo $time_diff
            echo $line_vis >> /apollo/data/xuehui_test/jpg_vis_matched_list.txt
            flag_deleted=0
            break
        fi
    done
    
    if [ "$flag_deleted" -eq 1 ]; then
        echo $line_radar >> /apollo/data/xuehui_test/jpg_radar_not_matched_list.txt #radar 没有找到合适的lidar时间戳
    fi
    
done
##这里还少一个把 jpg_radar_not_matched_list.txt 里出现的所有路径,在jpg_001_list.txt中都删掉

参考:
shell比较浮点数和整数

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值