いくつかのファイルの名前を次の形式に変更したいと思います。
ABCD_20181102.jpg
DEDE_2_20181030.jpg
通常、4つのランダムな文字で構成され、その後に下線と日付(年、月、日)が表示されます。または、任意の4文字、下線、ランダムな数字、下線、日付順です。
このファイルの名前を日付(または必要に応じて任意の数字)に変更し、次の任意の文字に変更したいと思います。
20181102_ABCD.jpg
20181030_2_DEDE.jpg
ベストアンサー1
パラメータ拡張を使用して文字列の一部を抽出できます。#
左から削除し、%
右から削除し、シンボルを2倍に増やすと、可能な限り長い一致が削除されます。
#! /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