태그 보관물: video

video

EXIF 데이터를 기반으로 여러 사진 및 비디오의 이름을 바꾸는 방법? 스크립트를 모으기 만했습니다. for i in *.* do mv

나는 종종 디지털 카메라와 태블릿 에서 PC로 사진과 비디오 (주로 JPG 및 MOV 확장자를 가짐) 를 내 PC 로 가져 오며, EXIF ​​데이터에 이미 존재 하는 날짜와 시간 에 따라 정렬하여보고자합니다 . 따라서 필자는 각 파일 이름 앞에 날짜 및 시간 스탬프를 삽입하여 간단한 노틸러스 스크립트 를 사용하여 이름바꾸는 것이 바람직합니다.

나는 지금까지 다음과 같은 노틸러스 스크립트를 모으기 만했습니다.

for i in *.*
do
mv -i "$i" "$(exiftool -CreateDate "$i" | awk -F ': ' '{print $2}')_"$i""
done

이 이름 변경 방법에서 마음에 들지 않는 점 은 EXIF ​​날짜 및 타임 스탬프에 사용 된 콜론 (예 : “2013 : 09 : 03 20 : 55 : 09_IMG_0108.JPG”)으로 나중에이 파일을 다른 환경으로 전송할 때 문제가 발생할 수 있습니다 ( 예) Windows).

이 명령 ( exiftool 대신 exiv2 사용 )을 사용하면 날짜 및 타임 스탬프를 편리하게 조작 할 수 있지만 비디오 (예 : MOV) 파일에서는 작동하지 않는다는 단점이 있습니다 .

exiv2 -k -r '%Y-%m-%d_%H-%M-%S_:basename:' rename "$i"

그래서 누군가 더 나은 해결책을 찾을 수 있기를 바랍니다. 그리고 원래 파일 이름과 확장자를 소문자로 변환해도 마술이 될 것입니다!



답변

이 이름 변경 방법에서 마음에 들지 않는 점은 EXIF ​​날짜 및 타임 스탬프에 사용 된 콜론 (예 : “2013 : 09 : 03 20 : 55 : 09_IMG_0108.JPG”)으로 나중에이 파일을 다른 환경으로 전송할 때 문제가 발생할 수 있습니다 ( 예) Windows).

다음과 같이 이름 지정 체계를 실행하여 sed콜론을 대시로 바꾸고 공백을 밑줄로 바꿀 수 있습니다.

mv -i "$i" "$(exiftool -CreateDate "$i" | awk -F ': ' '{print $2}' | sed -e 's/:/-/g' -e 's/ /_/g')_$i"

전체를 소문자로 만드는 경우 다음을 사용할 수 있습니다 rename.

rename 's/(.*)/\L$1/' file.JPG
##  or
rename 's/(.*)/\L$1/' *.*

또는 다음과 같이을 사용하여 스크립트 내에서 수행 할 수 있습니다 sed.

j=$(echo "$i" | sed -e 's/\(.*\)/\L\1/')

… 다음 사용 $j최종 대신에 변수를 $i당신의 mv라인. 다른 sed 배포판은 다른 이름 바꾸기 명령을 가지고 있지만 sed는 보편적 이므로이 sed 방식은 약간 더 이식성이 있습니다 (중요한 경우).

또는 대신 스크립트를 다음과 같이 수정하여 tr대신 처음에 소문자로 파일 이름 변환을 수행 할 수 있습니다 .

for arg
do
  tmp="$(echo "$arg" | tr '[A-Z]' '[a-z]')"
  mv -i "$arg" "$(exiftool -CreateDate "$arg" | awk -F ': ' '{print $2}' | sed -e 's/:/-/g' -e 's/ /_/g')_$tmp"
done

다른 파일 유형에 대해 약간 다른 명령을 수행하기 위해이 스크립트에서 bash case 문을 사용할 수 있습니다. 예를 들면 다음과 같습니다.

#! /usr/bin/env bash
for filename in ./*
do
  tmp="$(echo "$filename" | tr '[A-Z]' '[a-z]')"
  case "$filename" in
    *.MOV|*.mov)
      mv -i "$filename" "$(exiftool -a -s -CreateDate-tur "$filename" | awk -F ': ' '{print $2}' | sed -e 's/\-[0-9][0-9]\:00//g' -e 's/\+[0-9][0-9]\:00//g' -e 's/:/-/g' -e 's/ /_/g')_$tmp"
      ;;
    *.JPG|*.jpg)
      mv -i "$filename" "$(exiftool -a -s -CreateDate "$filename" | awk -F ': ' '{print $2}' | sed -e 's/:/-/g' -e 's/ /_/g')_"$tmp""
      ;;
    *)
      echo 'Not a *.jpg or a *.mov!'
      ;;
  esac
done

이 예에서, JPG 파일 이후 또는 JPG 파일이 시작되기 전 또는 이후에 시간 단위가 CreateDate 인 타임 스탬프가있는 MOV 파일의 이름을 바꾸려면 다른 (-tur) EXIF ​​데이터를 사용하여 해당 시차 접미사를 제거하고 -tur 부분 을 변경해야 할 수도 있습니다. 시스템에 설정된 위치에 따라


답변

내 사진의 이름을 바꾸고 여기 에서이 질문을 찾았습니다 exiftool.

에서 http://www.sno.phy.queensu.ca/~phil/exiftool/filename.html

exiftool -d %Y-%m-%d_%H-%M-%S%%-c.%%e "-filename<CreateDate" DIR

원래 파일 이름을 추적하고 확장명을 소문자로 쓰려면 :

exiftool -d %Y%m%d_%H%M%S%%-c-%%f.%%le "-filename<DateTimeOriginal" [.|DIR]

전체 파일 이름도 소문자로 동일하게 작동합니다.

exiftool -d %Y%m%d_%H%M%S%%-c-%%lf.%%le "-filename<DateTimeOriginal" [.|DIR]


답변

스크립트를 선호한다고 말했지만 무료 Java 응용 프로그램을 사용하는 경우 AmoK Exif Sorter를 사용할 수 있습니다

여기에 이미지 설명을 입력하십시오


답변

나는 krename이것을 사용할 것이다. 그것

  • 실시간 미리보기를 보여줍니다
  • 취소 할 수 있습니다
  • 재귀 적으로 dir로 갈 수 있습니다
  • 여러 개의 이름 바꾸기 패턴을 허용
  • 패턴에서 glob 및 regexp 허용
  • 역사를 기억

답변

pyrenamer는 새로 설치된 Ubuntu 16.04에서 작동하지 않으므로이 문제를 해결할 다른 방법을 찾아야합니다.

하나의 폴더에 IMG_0001.JPG, IMG_0002.JPG 등의 파일이 있습니다. 이 사이트를 확인하십시오 /programming/917260/can-var-parameter-expansion-expressions-be-nested-in-bash

“exiv2″를 먼저 설치하고 다음 명령 줄을 작성했습니다.

img의 경우 $ (ls *. [Jj] [Pp] [Gg] 2> / dev / null); exiv2 -r ‘% Y % m % d_ % H % M % S _’ “$ (tmp = $ {img %%. *}; echo $ {tmp ## * _})”이름 바꾸기 “$ img”; 끝난

출력 파일 이름은 YYYYMMDD_HHMMSS_0001.JPG, YYYYMMDD_HHMMSS_0002.JPG 등입니다. 같은 초에 사진을 찍은 경우에도 원본 사진 일련 번호가 달라집니다.


답변