Linuxってコマンドいっぱい使うと思うのですが、windowsのpowershellでそれを実現しようとするとうまくいかずハマることもあるかと思います。
かく言う僕もwindowsはあまり好きではなく、開発をするには使いづらいなぁなんて度々思います。
さて、今回はLinuxコマンドで超おなじみのコマンドlsがあるかと思います。
そして、良く一緒に使うのがgrepです。
lsとgrepの合わせ技は良く僕も使っています。
これをwindowsのpowershellで使うとどのようになるかを備忘録としてまとめていきます。
🤩この記事のゴール
Linuxコマンドの「ls -la | grep」をPowershellで実現する
導入:「ls -la | grep」とは(わかる人はこの節はスキップ推奨)
まず、「ls -la | grep」はどういう挙動をするかをおさらいしておきます。
分かる人はここの部分スキップして大丈夫です。
「ls」は存在するファイルの表示、「grep」は絞り込みです。
ですので「ls -la | grep」は「ls」で表示するものを「grep」で絞り込むですね。
例えば以下のような状況を見てみましょう。
# ls
test_cat.txt test_dog.txt test_horse.txt test_lion.txt test_sheep.txt test_snake.txt
これを「ls -la」と「-la」のオプションを付けて詳細に表示できます。
# ls -la
合計 8
drwxr-xr-x 2 root root 4096 10月 8 19:35 .
drwxr-xr-x 3 root root 4096 10月 8 19:34 ..
-rw-r--r-- 1 root root 0 10月 8 19:35 test_cat.txt
-rw-r--r-- 1 root root 0 10月 8 19:35 test_dog.txt
-rw-r--r-- 1 root root 0 10月 8 19:35 test_horse.txt
-rw-r--r-- 1 root root 0 10月 8 19:34 test_lion.txt
-rw-r--r-- 1 root root 0 10月 8 19:35 test_sheep.txt
-rw-r--r-- 1 root root 0 10月 8 19:34 test_snake.txt
この中から「sheep」という文字が含まれているファイルだけ表示させるには以下のように「grep」を使います。
# ls -la | grep sheep
-rw-r--r-- 1 root root 0 10月 8 19:35 test_sheep.txt
「ls -la | grep」をPowershellで行う
Powershellでlsと同様の挙動をするコマンドは「dir」です。以下のように表示されます。
> dir
ディレクトリ: C:\test
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 2021/10/08 19:38 0 test_cat.txt
-a---- 2021/10/08 19:39 0 test_dog.txt
-a---- 2021/10/08 19:39 0 test_horse.txt
-a---- 2021/10/08 19:39 0 test_lion.txt
-a---- 2021/10/08 19:40 0 test_shake.txt
-a---- 2021/10/08 19:40 0 test_sheep.txt
「grep Powershell」とかで検索するとまず出てくるのが「Select-String」。
しかし、でない。
> dir | Select-String "sheep"
やっぱり出ない。
> dir | Select-String "test_sheep.txt"
ああああああああ!ムキィィーーーーーー!ってなってしまいました。
これで解決🕵️♀️
まあそれもそのはずで「Select-String」は特定のテキスト(文字列)を含むファイルを検索するためのものらしい。
確かにgrepも特定のテキスト(文字列)を含むファイルを検索するための用途として使えますが。。
なんか地味にハマりました。。
絞り込みは「findstr」を使います。これで解決。以下のように👇、ほらね!!
> dir | findstr "sheep"
-a---- 2021/10/08 19:40 0 test_sheep.txt
😎まとめ
はい、今回はLinuxコマンドの「ls -la | grep」をPowershellで実現しました。
普段Linuxを使っていると、Powershellを使う時、本当に使いにくい。
開発は基本Linuxがいいと思います。無料OSですし。
今回はここまで。最後まで読んでいただきありがとうございました。