Bash
通過切換下劃線前後的內容來重新命名文件名
我想重命名一些具有以下格式的文件:
ABCD_20181102.jpg DEDE_2_20181030.jpg
即通常是 4 個隨機字母,後跟一個下劃線和一個日期(年、月、日)。或者 4 個隨機字母,後跟一個下劃線、一個隨機數、一個下劃線,然後是一個日期。
我想將這些文件重命名為日期,(如果需要,隨機數),然後是隨機字母,如下所示:
20181102_ABCD.jpg 20181030_2_DEDE.jpg
您可以使用參數擴展來提取部分字元串。
#
從左邊%
刪除,從右邊刪除,加倍符號刪除最長可能匹配。#! /bin/bash for f in ABCD_20181102.jpg DEDE_2_20181030.jpg ; do suffix=${f#*.} before_underscore=${f%%_*} after_underscore=${f#*_} after_underscore=${after_underscore%.$suffix} if [[ $after_underscore = *_* ]] ; then before2=${after_underscore%_*} after2=${after_underscore#*_} after_underscore="$after2"_"$before2" fi echo mv "$f" "$after_underscore"_"$before_underscore.$suffix" done
一旦您檢查了腳本是否符合您的需要,只需刪除
echo
之前的內容。mv