2014-01-07 5 views
0

이 웹 사이트와 인터넷에서이 답변을 찾았지만 구체적으로 찾을 수 없습니다. Linux에 대한 지식이 그리 크지는 않지만 여기에 내 문제가 있습니다. 파일 이름이 8자인 JPG 파일을 변환하고 싶습니다. 2014-12-12 23.59.59.jpg ~ 484140b7.jpg (heximal). 내가 와서 또는이 코드 발견 : 나는 여기 저기 당신의 printf "%의 X \ 없음"같은 것을 사용할 수 있습니다 본십진법에서 파일 이름을 십진법으로 변환하는 방법은 무엇입니까?

ddate=$(exiv2 "${i}"|grep timestamp|cut -c 24-37|tr -d " :") 
cp "$i" "${ddate}.jpg" 

을,하지만 난 일하러 가야 관리하지 않습니다.

누군가가이 문제를 해결할 수 있습니까?

이미 고맙습니다!

+0

출력 무엇입니까 'exiv2 "$ {i}"| grep timestamp'? – janos

+0

결과는 찍은 사진의 타임 스탬프이지만 다음과 같습니다. 이미지 타임 스탬프 : 2014-12-12 23.59.59 – Helfenstein

답변

1
이 같은

아마 뭔가 : 먼저 날짜의 전면에서 연도를 제거 할 경우 시도로

for x in *.jpg; do 
    f=$(sed "s/[^0-9]//g" <<< "$x") 
    cp "$x" "$(printf "%x.jpg" "$f")" 
done 

, 당신이 cut을 사용할 수

for x in *.jpg; do 
    f=$(sed -e "s/[^0-9]//g" -e "s/^....//" <<< "$x") 
    cp "$x" "$(printf "%x.jpg" "$f")" 
done 
+0

@chepner 감사합니다. 조금 더 깔끔합니다. :) – lurker

+0

편집 해 주셔서 감사합니다. 그것은 나아 보인다. 나는 여기에서 약간 혼란 스럽다. 첫째로 그것은 cp 대신 mv이어야합니다. 따라서 제 코드는 이미 1212235959.jpg입니다. 이것은 16 진수 484140b7.jpg가되어야합니다. 나는 코드를 테스트 할 시간이 없었지만 필자가 원하는 것보다 파일의 이름에서 뭔가를 얻으려는 느낌이 들었다. 나는 그 같은 숫자를 얻으려는 생각이 마음에 들지만, exiv2 "% Y % m % d % h % m % s"같은 것을 사용할 수도 있습니다. 그러나 나는 리눅스에서 그리 멀지 않았기 때문에 내가 틀렸다면 나를 바로 잡으십시오. – Helfenstein

+0

@ janos, 네, 좋은 캐치, 고마워요. – lurker