批量修改视频文件,在新文件中保留创建日期

批量修改视频文件,在新文件中保留创建日期

我制作了一个脚本来使用 avconv 减小 .mov 和 .mp4 视频的大小,并跳过已经压缩的视频(通过字符串存在)。在脚本中,我将视频的日期放在名称中,但我更愿意将视频的原始日期保留在缩小的文件中作为属性,当然在脚本中没有实现。 linux 控制台可以吗?

#! /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使用给定文件作为应用于目标文件的时间参考。

相关内容