LoginSignup
36
30

More than 5 years have passed since last update.

シェルスクリプトのみでMacとWindowsのファイルパスを相互変換する方法(Macユーザ向け)

Last updated at Posted at 2016-03-21

職場などでMacとWindowsのファイルパスを相互変換したい機会って多いですよね?

自分の職場(部署)ではほとんどがWindowsユーザなので、slackなどでファイルパスをやり取りする際、ほぼ100%パスを変換する必要がでてくる

例)同じファイルが
Winだと
\\Nas\aaa\bbb\ccc.xlsx
Macだと
smb://Nas/aaa/bbb/ccc.xlsx

PathCon※というwebサービスで解決できるがもっと簡単にしたい

※2018/1/29追記 PathConはサービス終了したようです
- Macへ移行直後からPahtConというwebサービスを使って解決していた
- 素晴らしいサービスで基本的にこれを利用すれば問題ない
- ただし、個人的に以下のような課題を感じていた
- いちいちwebサイトを開いてパスを変換するのが手間(web読み込みにも時間かかる)
- セキュリティも心配

Automatorを活用して解決する方法

Automatorを利用せずシェルスクリプトのみで実現する方法

今回色々調べてやってみたのがこちら
なんとなくAutomatorを使うのが余計面倒に感じる方むけ

[手順]
1.MacとWindowsのファイルパスを相互変換するスクリプトを用意
macからwinへ

#!/bin/bash
# クリップボードに格納されたパスをmacからwinへ置換して再びクリップボードへ格納するスクリプト
pbpaste | sed -E 's/smb:\/\//\\\\/' | sed -E 's/\//\\/g' | tr -d '\n' | pbcopy

winからmacへ

#!/bin/bash
# クリップボードに格納されたパスをwinからmacへ置換して再びクリップボードへ格納するスクリプト
pbpaste | sed -E 's/\\+/smb:\/\//' | sed -E 's/\\/\//g' | tr -d '\n' | pbcopy

2.用意したスクリプトをFinderなど、コンソール以外からも実行できるようにする
[.sh]を[.command]という拡張子に変更し、実行権限をつけることで実現できる

Macでバッチ(command)ファイルを作る方法

3.作成したバッチをspotlight検索などで瞬時に実行できるようにして利用
自分の環境ではデスクトップにシンボリックリンクを貼り、spotlight検索で表示されるようにする必要があった

感想ひとこと

  • そもそもsedやtrや正規表現での置換とか実はちゃんとやったことなかったので勉強になった
  • 覚えたてのpbcopy/pbpasteもやはり便利 →Macのターミナルとクリップボード間でコピー&ペースト
  • [.command]で実行すると毎回コンソールが立ち上がって邪魔とか、spotlightで検索ってどうなの?とか課題は山ほどあるが、いくらでも工夫の余地がありそうなのと、PathCon使うよりはスピーディーになったので、ひとまず満足してます
  • 個人的にはクリップボード履歴アプリに、スクリプトでテキスト整形できる機能が ついていれば一番いいのだけど、なかなかこれ、というアプリが見つからない

参考

【神ツール】会社Macユーザー必見!MacとWindowsのファイルパスを相互変換できるウェブサービス「PathCon」
MacのAutomatorを使ってWindowsのファイルパスを変換しつつFinderで開く方法
Macのターミナルとクリップボード間でコピー&ペースト
hydroculのメモ > コマンドの使い方(Linux) > sed コマンド
hydroculのメモ > コマンドの使い方(Linux) > tr コマンド
正規表現によるマッチング
Macでバッチ(command)ファイルを作る方法
Macでファイル名検索する方法のまとめ

36
30
1

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
36
30