0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Macのショートカットアプリでディレクトリ内ファイルを一括リネームして別ディレクトリに移動する

Posted at

結論

さっさとシェルスクリプト書いた方がいい(暴論)

環境

  • macOS Monterey 12.3.1
  • Shortcuts 5.0

やりたかったこと

  • ゲーム制作で、シナリオをGoogle スプレッドシートで管理している
  • シートをTSVでダウンロードする
  • ダウンロードしたファイルをリネーム(拡張子もtxtに変更)
  • 所定のディレクトリに移動

今までこれを全部手動でやっていましたが、そのうち下2つはすぐに自動化できるのではと思いmacOSに標準搭載されたショートカットアプリで実際にやってみました。
なんかめっちゃハマった。

ファイルのリネームについてですが、ダウンロードしたファイル名は
ファイル名-シート名.tsv
というルールで命名されます。これを、
シート名.txt
に変更します。

ちなみになぜtsvからtxtに拡張子を変えなきゃいけないかというと、Unityでは拡張子tsvはよくわからんファイルということでインスペクタで指定できないからです。

レシピ

Screen Shot 2022-04-16 at 15.58.05.png

実際やっていることはシンプルでダウンロード先ディレクトリからtsvファイルを一覧で取得してリネーム、そして所定のディレクトリに移動という流れです。
ここでハマったのがリネームです。

Screen Shot 2022-04-16 at 15.47.02.png
ファイルをイテレータで取得する時にさらにファイルのどの属性を取得するかを細かく指定できます。名前はファイル名(拡張子除く)なので、これでサクッととれます。
get_filenames.png

次にこれを好きな名前に変換します。正規表現が使えるので、好みに合わせて変更します。
最後に指定したディレクトリに移動します。
あぁめっちゃ簡単じゃん。

そして実行すると、

stage_2_4_epi.tsv

なんで拡張子そのままなの。

正直理由わからんのですが、推測としては拡張子を除いた名前というメタデータが残った状態で処理されていそう + 余計な拡張子だと思われるものは勝手に排除してリネームされるという処理が裏でされているんじゃないかという推理です。

で、どうすればいいかというと名前ではなくファイルパスからファイル名を取得します。こちらはフルパスになるのですが、それをファイル名.拡張子に正規表現で変更してあげた後同じようにリネーム&移動で解決しました。

こんな変な沼にはまると全然解決手段が検索しても引っかからないのでさっさとシェルスクリプトなりPythonスクリプト書いた方がスプレッドシートのAPIから直接DLしてリネームまで全部できそうな気がします。

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?