概要
作業中のファイルをメール等で共有して確認する時に,ファイル名_v07.docx
のように,バージョン番号が付いていると便利です.
しかし,イチイチコピペしてバージョン番号を書き換えるのは面倒です.
具体的にどのような動作をするか
バージョン番号が付いているファイルがディレクトリ内に無い時
バージョン番号が付いていているファイルが同一ディレクトリ内に無い時には,ファイル名_v01.docx
というファイルがディレクトリ内に作成されます.
バージョン番号が付いているファイルがディレクトリ内にあるとき
バージョン番号が付いているファイルが同一ディレクトリ内にあるときには,バージョン番号を1つ増やしたファイルが作成されます.
例) ファイル名_v03.txt
がディレクトリ内にあるときに,実行するとファイル名_v04.txt
が作成されます.
実際のコード
- 使用方法
tcsh version.sh ファイル名
または,
/bin/
とかに置いて,パスをはりましょう.
version.sh
#!/bin/tcsh
if ($#argv != 1) then
echo "Usage: Invalid Argument"
exit 1
endif
set filefullname = $1
set filename = $filefullname:r
set extension = $filefullname:e
# Retrieve the current version number
set vernum = `ls *.{$extension} | grep $filename | sort -t _ -k 3 -n | tail -n1 | sed -e "s/^.*_v\([0-9]*\).*/\1/"`
# Parameters for determining whether a file with a version number exists
set nullvernum = `ls *.{$extension} | grep $filename | sort -t _ -k 3 -n | tail -n1`
# Increment or set version number
if ($nullvernum == $vernum) then
@ newvernum = 1
else
@ newvernum = ${vernum} + 1
endif
set newvernumchar = `printf "%02d" $newvernum`
set newfilename = $filename"_v"$newvernumchar.$extension
cp $filefullname $newfilename