[小ネタ]WindowsとWSL(Windows Subsystem for Linux)間でパス文字列を相互変換してみた
はじめに
データアナリティクス事業本部の藤川です。
普段は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
さいごに
WSL
とwslpath
コマンドのお陰で、Windows環境で簡単にgrep
コマンドを使用できるようになりました。
C:\>wsl wslpath 'C:\Users' /mnt/c/Users
cd /mnt/c/Users find . -type f | grep -i amplify -