フォルダ名にプロジェクト固有の名詞が入っているが、それらを丸ごとリネームしたい!
メーカーの印刷版下だと各メーカーごとにルールは異なるが、プロジェクトや製品名が入っていたり、図面の番号などが入っていることが多い。
また、納品時にはAI/PDF/PNG/TXTをセットで渡すなど、異なる形式のファイルに同じ名詞が入っていたりする。
フォルダ階層の例.txt
C:.
│
└─hoge
│ hoge.1.ai
│ hoge.2.png
│ hoge.3.pdf
│ hoge.txt
│
└─fuga
fuga.1.ai
fuga.2.png
fuga.3.pdf
fuga.txt
このうち、サブフォルダはそのままでhogeフォルダ名とhogeフォルダ内に入っているファイル名だけ変更したい場合のBashスクリプトを作った。
RenameScript.sh
#!/bin/sh
# 引数なしなら終了
if [ $# -lt 2 ]
then
echo "引数が不適切です。例) $0 [元の名称] [変更された名称]"
else
# フォルダリネーム
mv $1 $2
cd $2
# ファイルリネーム
for f in *$1*
do
mv $f ${f/$1/$2}
done
cd ../
fi
やっていることは単純で、
1. 引数で変更したい名称のbefore/afterを設定
2. フォルダ名をリネーム
3. リネームしたフォルダに移動
4. ファイル名のリネームをfor文で繰り返す
を行っている。
フォルダ階層の例で「hoge」⇒「hage」にしてみる。
$ ./RenameScript.sh hoge hage
結果はこちら
フォルダ階層の例.txt
C:.
│ RenameScript.sh
│
└─hage
│ hage.1.ai
│ hage.2.png
│ hage.3.pdf
│ hage.txt
│
└─fuga
fuga.1.ai
fuga.2.png
fuga.3.pdf
fuga.txt
サブフォルダを検索してリネームしてないけど?
InDesignといったAdobe系ソフトの場合、パッケージという機能でリンク先のファイルを自動収集してまとめてくれる機能がある。
そういったファイルは元のファイルでファイル名を参照しているので、勝手にリネームすると再リンクさせる必要が出てくる。なので、サブフォルダ以降のフォルダは対象外としている。