LoginSignup
0
0

More than 5 years have passed since last update.

フォルダ名と一致しているファイル名の一部をリネーム

Posted at

フォルダ名にプロジェクト固有の名詞が入っているが、それらを丸ごとリネームしたい!

メーカーの印刷版下だと各メーカーごとにルールは異なるが、プロジェクトや製品名が入っていたり、図面の番号などが入っていることが多い。
また、納品時には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系ソフトの場合、パッケージという機能でリンク先のファイルを自動収集してまとめてくれる機能がある。
そういったファイルは元のファイルでファイル名を参照しているので、勝手にリネームすると再リンクさせる必要が出てくる。なので、サブフォルダ以降のフォルダは対象外としている。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0