저는 리눅스를 처음 사용합니다. 특정 날짜 범위에서 날짜를 인쇄하고 저장할 수있는 방법은 무엇입니까?날짜 범위에서 날짜 인쇄 리눅스
예를 들어 저는 startdate = 2013-03-01이고 enddate = 2013-03-25입니다. 그 범위의 모든 날짜를 인쇄하고 싶습니다. ..
저는 리눅스를 처음 사용합니다. 특정 날짜 범위에서 날짜를 인쇄하고 저장할 수있는 방법은 무엇입니까?날짜 범위에서 날짜 인쇄 리눅스
예를 들어 저는 startdate = 2013-03-01이고 enddate = 2013-03-25입니다. 그 범위의 모든 날짜를 인쇄하고 싶습니다. ..
사용 date
에서
덕분에, 초 날짜로 변환 약간의 수학을 다시 변환 날짜가 YYYY-MM-DD 형식 인 동안 사전 식으로 비교할 수 있으며 date
은 초로 변환하지 않고 달력 계산을 수행합니다.
startdate=2013-03-15
enddate=2013-04-14
curr="$startdate"
while true; do
echo "$curr"
[ "$curr" \< "$enddate" ] || break
curr=$(date +%Y-%m-%d --date "$curr +1 day")
done
[ ... ]
을 사용하는 경우 <
을 이스케이프 처리해야 입력 리디렉션 연산자와 혼동을 피할 수 있습니다.
종료일보다 큰 경우 시작일이 인쇄되는 사마귀가 있습니다.
로를
#/bin/bash
dstart=2013-03-01
dend=2013-03-25
# convert in seconds sinch the epoch:
start=$(date -d$dstart +%s)
end=$(date -d$dend +%s)
cur=$start
while [ $cur -le $end ]; do
# convert seconds to date:
date [email protected]$cur +%Y-%m-%d
let cur+=24*60*60
done
날짜 매개 변수에 대한 자세한 정보를 원하시면 man date
를 참조하십시오 : 사전
당신이 '최근'날짜하려면 대체는 다음과 같습니다
echo {100..1} | xargs -I{} -d ' ' date --date={}' days ago' +"%Y-%m-%d"
는 분명히 임의의 날짜 범위에 대해 작동하지 않습니다.
이것은 제가 생각하기에 가장 좋은 대답입니다. 나는 그걸로 변경했습니다 : $ startdate = '2016-03-01'; 에코 {0..10} | xargs -I {} -d " 'date --date ="$ startdate + "{}"days "+"% Y- % m- % d " 2016-03-01 2016-03-02 2016- 03-03 .... – user5672998
또 다른 옵션은 dateutils
(http://www.fresse.org/dateutils/#dateseq)에서 dateseq
을 사용하는 것입니다
$ dateseq 2013-03-01 2013-03-25
2013-03-01
2013-03-02
2013-03-03
2013-03-04
2013-03-05
2013-03-06
2013-03-07
2013-03-08
2013-03-09
2013-03-10
2013-03-11
2013-03-12
2013-03-13
2013-03-14
2013-03-15
2013-03-16
2013-03-17
2013-03-18
2013-03-19
2013-03-20
2013-03-21
2013-03-22
2013-03-23
2013-03-24
2013-03-25
버전
#!/bin/bash
startdate=2013-03-15
enddate=2013-04-14
curr="$startdate"
while true; do
[ "$curr" \< "$enddate" ] || { echo "$curr"; break; }
echo "$curr"
curr=$(date +%Y-%m-%d --date "$curr +1 day")
done
그래서, 단지 시험 후'에코 "$의 CURR를"'할) . 'date --date "$ curr +1 day"는'let cur = ..'보다 더 좋다. –
안전을 위해서 while 루프가 아닌 for 루프에 넣는 것이 더 나을 것이다. 스크립트에서 startdate와 enddate를 매개 변수화하면 최대 366 회 또는 1000 회 반복 실행이 가능합니다. 이것은 무한 루프를 막을 것입니다. – ekangas