본문 바로가기

Programing/Node.js

블랙박스 영상 - 생성시간 파일명과 싱크하기

블랙박스 파일을 이리저리 복사하다 보니 생성일이 복사한 시간으로 바뀌어버렸다.

구글 포토는 exif과 같은 메타 파일이 없는 경우에 파일의 생성일을 기준으로 날짜를 판단한다.


그래서 동영상 파일과 같은 경우에 생성 시간이 중요하다.

블랙박스 파일의 경우 생성시간이 파일명으로 되어 있기 때문에 touch명령을 이용하여 생성일을 맞출 수가 있다.

$ touch -a -m -t 201809241010.18 REC2_20180924_101018.avi

다만 수작업으로 하기에 파일이 많으면 시간이 많이 걸리기 때문에 node.js로 스크립트를 만들었다.


const fs = require('fs');

const targetFileRegex = /.{4}_(\d{8})_(\d{4})(\d{2}).avi/;

const exec = require('child_process').exec;


fs.readdir('.', function(err, files) {

for (var index in files) {

var file = files[index];

var result = file.match(targetFileRegex);

if (result !== null) {

var filename = result[0];

var opt = result[1] + result[2] + '.' + result[3];

console.log(filename + '=>' + opt);


var child = exec("touch -a -m -t " + opt + " " + filename, function (error, stdout, stderr) {

    if (error !== null) {

        console.log('exec error: ' + error);

    }

});

}

}

});


sync_create_date.js


현재 디렉토리의 파일들을 생성시간, 수정시간 모두 파일명 기준 시간으로 변경하게 된다. (아래는 테스트)

$ node sync_create_date.js

EVT2_20180924_090846.avi=>201809240908.46

REC2_20180924_091558.avi=>201809240915.58

REC2_20180924_092152.avi=>201809240921.52


변경 전




변경 후