ぼんやりDTP

DTPに関係したりしなかったりするぼんやりとした話をなんとなく。

macのターミナルでカレントディレクトリのフォルダの中の特定のファイルのファイル名の一部をフォルダ名に置換する

macのターミナルでカレントディレクトリのフォルダの中の特定のファイルのファイル名の一部をフォルダ名に置換する。

renameコマンドをインストール。

brew install rename

下記コマンドを実行。

例:idmlファイルのファイル名の一部の「hoge」をファイルが含まれるフォルダの名称に置換。

処理前 処理後
カレントディレクトリ
└XXX
 └sample_hoge.idml
カレントディレクトリ
└XXX
 └sample_XXX.idml
for i in ./*/*.idml; do rename -s hoge $(dirname $i | xargs -I{} basename {}) $i; done

例:indbファイルのファイル名の一部の「XXX」をファイルが含まれるフォルダの名称の一部(アルファベットの大文字3つの連続)に置換。

処理前 処理後
カレントディレクトリ
└xxxx_ABC_X
 └sample_XXX.indb
カレントディレクトリ
└xxxx_ABC_X
 └sample_ABC.indb
for i in ./*/*.indb; do rename -s XXX "$(dirname "$i" | xargs -I{} basename {} | sed -E "s/.*([A-Z]{3}).*/\1/")" "$i"; done

renameの基本的な記述は以下の通り。

例:「sample_hoge.txt」ファイルのファイル名の一部の「hoge」を「fuga」に置換。

rename -s hoge fuga sample_hoge.txt

参考ページ:

  1. forコマンドの使い方: UNIX/Linuxの部屋
  2. macのrenameコマンドでカレントディレクトリ以下のファイル名を一括置換する | ITを使っていこう
  3. xargs【コマンド】とは|「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典