비디오 파일을 일괄 수정하고 새 파일에 생성 날짜를 유지합니다.

비디오 파일을 일괄 수정하고 새 파일에 생성 날짜를 유지합니다.

avconv를 사용하여 .mov 및 .mp4 비디오의 크기를 줄이고 이미 압축된 비디오(문자열을 통해 존재함)를 건너뛰는 스크립트를 만들었습니다. 스크립트에서는 이름에 동영상의 날짜를 넣었지만 축소된 파일의 동영상 원본 날짜를 속성으로 유지하는 것을 선호했는데 이는 물론 스크립트에서 구현되지 않습니다. 리눅스 콘솔을 사용할 수 있나요?

#! /bin/bash
shopt -s globstar || exit
for f in **
do
  if [[ "$f" =~ \.mp4$ ]] || [[ "$f" =~ \.mov$ ]] || [[ "$f" =~ \.MOV$ ]] ; then
    if [[ "$f" =~ reduced.*\.mp4$ ]] || [[ "$f" =~ compressed.*\.mp4$ ]]; then
    echo "already compressed"
    else
      if yes |      avconv -i "$f" -c:v libx264 -crf 24 -c:a aac -strict -2 "${f%.*}_$(date -d@$(stat --printf='%Y' "$f") +%Y%m%d)"_compressed.mp4; then
      rm -Rf "$f"
      else
      rm -Rf "${f%.*}_$(date -d@$(stat --printf='%Y' "$f") +%Y%m%d)"_compressed.mp4
      echo "Command failed"
      fi
    fi
  fi
done

답변1

예, 다음을 사용하여 이 작업을 수행할 수 있습니다 touch.

else
  t="${f%.*}_$(date -d@$(stat --printf='%Y' "$f") +%Y%m%d)"_compressed.mp4
  if yes |      avconv -i "$f" -c:v libx264 -crf 24 -c:a aac -strict -2 "$t"; then
    touch -r "$f" "$t"
    rm -f "$f"
  else
    rm -f "$t"
    echo "Command failed"
  fi
fi

-r옵션은 touch지정된 파일을 대상 파일에 적용되는 시간 참조로 사용함을 나타냅니다.

관련 정보