[小ネタ]WindowsとWSL(Windows Subsystem for Linux)間でパス文字列を相互変換してみた

WindowsファイルシステムとWSL内のファイルシステムで相互にパス文字列を変換できるコマンドについてご紹介したいと思います。
2021.06.19

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

はじめに

データアナリティクス事業本部の藤川です。
普段はWindows PCを使用し、コードを書いたりしていますが、ファイルの検索で困っています。
Windowsエクスプローラーの検索窓は思うように言うことを聞いてくれなくて、欲しい情報以外にも大量にヒットしてしまいます。筆者の使い方が悪いだけかもしれませんが...。
grepコマンドを使いたくても、cygwinをインストールしたり、パスの「\」(円マーク)「/」(スラッシュ)に変換したり、とにかく面倒だったので諦めていました。

WSL(Windows Subsystem for Linux)がWSL2に上がってからはDockerが使いやすくなり、飛躍的に開発環境が良くなっています。
あとは、「\」(円マーク)さえ何とかなればと探してみたら、ありました!
ということで、WindowsファイルシステムとWSL内のファイルシステムで相互にパス文字列を変換できるコマンドについてご紹介したいと思います。

使い方

wslpathコマンドの使い方は簡単です。

  • オプション指定がなければ、WSLのパス文字列が得られます
  • -wをオプション指定すれば、Windowsのパス文字列が得られます
  • パス文字列の前後を必ず「'」(シングルクォート)で括ってください

wslpathコマンドはWSL用のコマンドですが、wslコマンドを使用することで、コマンドプロンプト等でも使えます。
WSLで使用する場合は、wslを外し、wslpathコマンドを実行してください。

以下は、コマンドプロンプトの場合を例にご紹介します。

Windows → WSLのパス文字列に変換

  • 構文
wslpath '<Windowsのパス文字列>'
  • 実行例
wsl wslpath 'C:\Users'
/mnt/c/Users

WSL → Windowsのパス文字列に変換

  • 構文
wslpath -w '<WSLのパス文字列>'
  • 実行例
wsl wslpath -w '/mnt/c/Users'
C:\Users

さいごに

WSLwslpathコマンドのお陰で、Windows環境で簡単にgrepコマンドを使用できるようになりました。

C:\>wsl wslpath 'C:\Users'
/mnt/c/Users
cd /mnt/c/Users
find . -type f | grep -i amplify -