한 날짜 형식에서 다른 형식으로 변환하는 방법은 무엇입니까? 반대로 변경하고 싶습니다.

날짜 형식에 문제가 있습니다. 한 형식에서 다른 형식으로 또는 그 반대로 변경하고 싶습니다. 내 날짜 형식은

형식 1

YYYY-MM-DD

형식 2

MM/DD/YYYY

형식 1을 형식 2로, 형식 2를 형식 1로 변경하고 싶습니다.



답변

이를 위해 GNU ‘날짜’를 사용하십시오. 또한 다른 형식으로 변환합니다 ( date --help형식 목록 참조 ).

$ date -d 2013-07-05 +%m/%d/%Y
07/05/2013
$ date -d 07/05/2013 +%F
2013-07-05

답변

텍스트 형식으로 변환해야하는 날짜가 있다고 가정

echo '2013-12-13' | awk -v FS=- -v OFS=/ '{print $2,$3,$1}'

그 반대

echo '12/13/2013' | awk -v FS=/ -v OFS=- '{print $3,$1,$2}'

답변

$ echo YYYY-MM-DD | { IFS=- read y m d && echo "$m/$d/$y"; }
MM/DD/YYYY

해당 날짜가 많은 파일이있는 경우 한 줄에 하나씩 :

awk -F- -vOFS=/ '{print $2,$3,$1}' < that-file

답변

다음과 같이 sed를 사용하십시오.

$ echo '2013-12-13' | sed -r 's/([[:digit:]]{2,4})-([[:digit:]]{1,2})-([[:digit:]]{1,2})/\2\/\3\/\1/g'
12/13/2013
$ echo '12/13/2013' | sed -r 's/([[:digit:]]{1,2})\/([[:digit:]]{1,2})\/([[:digit:]]{2,4})/\3-\1-\2/g'
2013-12-13

답변

파일 이름에서 날짜 형식을 변경하는 방법에 대한 의견에서 명확한 질문에 대답하려면 drewbenn의 gnu date접근 방식을 사용하십시오. 이 명령은 로컬 폴더에서 모든 파일을 찾고 파일 이름 만으로 파이프하고 이름을 바꾸는 두 번째 인수로 수정 ​​된 파일 이름을 xargs대체합니다 .datemv

명령 bashbash평가할 때 변수를 대체로 약간 체계적으로 사용하는 것이 필요 합니다 date.

find ./ -printf '%f\n' | xargs -I '{}' sh -c 'mv $1  $(date -j -f %Y-%m-%d $1 +%m/%d%Y)' -- {} \;