用BASH批次改影片名-時間戳轉換與去除前綴

使用BASH修改影片檔名格式


1. 轉換時間戳成日期

舉例說明:

1685877964314.mp4 改成 20230604_192604.mp4 

1688511747190.mp4 改成 20230705_070227.mp4


2. 去除前綴詞

舉例說明:

video_20230601_204241.mp4 改成 20230601_204241.mp4



改時間戳成日期時間

for INPUT in 1*.*
do
MSEC=$(echo "$INPUT" | cut -b1-10)
EXTENSION="${INPUT##*.}"
OUTPUT=$(date +%Y%m%d_%H%M%S --date="@$MSEC")
echo "$INPUT --> $OUTPUT.$EXTENSION"
mv "$INPUT" "$OUTPUT.$EXTENSION"
done

由於時間戳轉換支援長度限制,所以這裡使用cut指令去除多的部份

$ date --date='@2147483647'

西元2038年01月19日 (週二) 11時14分07秒 CST


$ date +%s%N | cut -b1-13

1726813726444 

再取出副檔名

最後使用date將時間戳轉成方便閱讀的日期格式

1685877964314.mp4 --> 20230604_192604.mp4

1685878033783.mp4 --> 20230604_192713.mp4

1685916451325.mp4 --> 20230605_060731.mp4

1687572861428.mp4 --> 20230624_101421.mp4

1687838843509.mp4 --> 20230627_120723.mp4

1688339822894.mp4 --> 20230703_071702.mp4

1688447782614.mp4 --> 20230704_131622.mp4

1688511747190.mp4 --> 20230705_070227.mp4

1688511754285.mp4 --> 20230705_070234.mp4

1688511755847.mp4 --> 20230705_070235.mp4

...


去除前綴詞


for INPUT in video_*_*.mp4
do
OUTPUT=$(basename "$INPUT" | cut -b7-)
echo "$INPUT --> $OUTPUT"
mv "$INPUT" "$OUTPUT"
done


就能一路將檔案改成

video_20230929_144422.mp4 --> 20230929_144422.mp4

video_20231007_193806.mp4 --> 20231007_193806.mp4

video_20231012_072708.mp4 --> 20231012_072708.mp4

video_20231019_190428.mp4 --> 20231019_190428.mp4

...


參考資料

BASH取得目錄名, 檔案名及副檔名及參數抽換功能


留言