2013-04-24 2 views
2

서로 다른 시간에 두 개의 파일이 생성되었습니다.셸에있는 두 파일의 날짜 비교

내 셸 스크립팅 프로그램에서 이전에 생성 된 파일의 날짜로 변수를 초기화하려고합니다.

예 : file1이 4 월 22 일에 작성되고 file2가 4 월 19 일에 작성된 경우 my 변수는 4 월 19 일에 초기화되어야합니다.

어떻게 이것을 bash 쉘에서 수행 할 수 있습니까? 날짜 비교가 직선 숫자 비교되는 후 %s 형식, 그래서 당신의 문제에 대한 솔루션, 모듈 구문 오류를 사용 할 수 convert to timestamps

+0

은 http://unix.stackexchange.com에 속합니다. – Raptor

답변

-1

/bin/date가있다 : GNU stat의 존재를 가정

DATE1=`date -j '22 April' +"%d %B"` 
DATE2=`date -j '19 April' +"%d %B"` 
if [[ $DATE2 < $DATE1 ]]; then 
    export VAR=`date -j $DATE1 +"%s"` 
else 
    export VAR=`date -j $DATE2 +"%s"` 
fi 
+0

sudo? 왜 날짜를 변환하기 위해 루트 권한이 필요합니까? – Matteo

+0

잘못된 시스템의 맨 페이지를 사용하고 있었기 때문에 작동하지 않았습니다. 어쨌든, 당신의 솔루션이 제공되지 않았다는 것을 감안할 때, downvote는 부당한 것이 었습니다. – hd1

+0

아직 내보내기에 sudo를 사용 중입니다. – Matteo

1

(부품) GNU의로 coreutils의 :

if [[ $(stat -c%W <file1>) -lt $(stat -c%W <file2>) ]] 
then 
    EARLIER="$(stat -c%w <file1>)" 
else 
    EARLIER="$(stat -c%w <file1>)" 
fi 

%W (정수의 경우) 대 %w (사람이 읽을 수있는) 중요하다.

%W/%w은 "제작 시간"을 물어 봤기 때문에 출생 시간입니다. 일반적으로 %Y/%y (마지막 수정) 또는 %Z/%z (마지막 변경)이 더 의미가 있습니다.

date -d "$(stat -c%w <earlier_file>)" +"%Y-%m-%d") 

PS : 당신이 타임 스탬프의 주제에있는 동안를위한 RFC 3339을 고려하시기 바랍니다 당신이 당신의 일에 대해 다른 형식을해야하는 경우 예를 들어

, 당신은 datestat 출력을 공급할 수 즉, YYYY-MM-DD HH : MM : DD-TZ 형식을 사용합니다.이 형식은 모호하지 않고 이식 가능하며 정렬 가능합니다.