我制作了一个脚本来使用 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
使用给定文件作为应用于目标文件的时间参考。