次のファイルセットがあります。
Q-30-09-1753.TIF
W-01-04-1753.TIF
W-31-12-1752.TIF
Y-14-12-1752.TIF
使用Windowsのgit bash以下のようにファイル名の末尾に文字を入れてファイル名を変更したいと思います。
30-09-1753-Q.TIF
01-04-1753-W.TIF
31-12-1752-W.TIF
14-12-1752-Y.TIF
次のコードを試してみました。
for f in *.TIF ; do
mv "$f" "${f//[A-Z]]\-[0-9][0-9]\-[0-9][0-9]\-[0-9][0-9][0-9][0-9]\-[A-Z]/}";
echo "$f"
done
最初の部分では、変更するファイルを正常に選択しますが、名前を変更すると、ワイルドカードの選択はリテラルです。
答え1
怠けてそうかもしれませんがsed
、
newfilename=$(echo "${f}"|sed 's/\(.\)-\([^\.]*\)\.TIF/\2-\1.TIF/')
mv "${f}" "${newfilename}"
bashの素晴らしいですが、別の文字列を置き換える方法を学ぶ代わりに:)
ただし、日付の場合、日付形式はソートには役立ちません。 ISO日付形式に変更:YYYY-MM-DDを使用すると、日付に基づいてファイル名を正しくソートできます。 (そうでない場合は、日付に基づいて最初に並べ替えてから、月、秒、年に基づいて並べ替えます。)
newfilename=$(echo "${f}"|sed 's/\(.\)-\(..\)-\(..\)-\(....\)\.TIF/\4-\3-\2-\1.TIF/')