Windows lsの代わりはdir?初心者でも迷わない一覧表示の基本
Windowsでフォルダ内のファイル一覧を確認したくて「ls」と入力したものの、エラーになって困った初心者や、Linux・macOSからWindowsへ移った方に向けた記事です。
Windowsでは、起動している画面がコマンドプロンプトかPowerShellかによって、使えるコマンドや書き方が異なります。
本記事では、lsの代わりになるdirの基本、PowerShellでのls、cdによる移動、Linuxコマンドとの対応関係までを、実行例とともにわかりやすく解説します。
まずは現在使っている画面を確認し、一覧表示の基本から身につけましょう。
Windowsでlsは使える?PowerShellとコマンドプロンプトの違い
Windowsで「ls」が使えるかどうかは、Windowsの種類ではなく、どのコマンド実行環境を開いているかで決まります。
黒い画面としてよく知られるコマンドプロンプトでは、標準状態のlsは使えず、一覧表示にはdirを使います。
一方、Windows PowerShellではlsがGet-ChildItemの別名としてあらかじめ登録されているため、Linuxに慣れた人でも入力しやすい点が特徴です。
ただし、同じlsという名前でもLinux版lsと完全に同じオプションや出力ではありません。
画面のタイトルやプロンプト表示を見て、cmdなのかPowerShellなのかを最初に把握すると、コマンドが見つからない問題を避けられます。
| 実行環境 | lsの可否 | 基本の一覧表示 |
|---|---|---|
| コマンドプロンプト | 標準では不可 | dir |
| Windows PowerShell | 利用可能 | ls / Get-ChildItem |
| PowerShell 7以降 | 利用可能 | ls / Get-ChildItem |
Windows PowerShellではlsコマンドを使え、Linux・UNIX経験者にもわかりやすい
Windows PowerShellでは、lsと入力するとGet-ChildItemが実行され、現在のフォルダにあるファイルやフォルダを一覧表示できます。
Get-ChildItemにはdir、ls、gciという複数の別名が設定されているため、ls、dir、Get-ChildItemは基本的に同じコマンドレットを呼び出します。
そのため、LinuxやUNIXでlsを使ってきた人は、PowerShellであればまずlsから試して構いません。
ただし、Linuxの「ls -l」や「ls -a」と同じ感覚でオプションを書くと、期待どおりに動かないことがあります。
PowerShellでは「-Force」「-Recurse」のようなPowerShell独自のパラメーターを使うため、Linuxとの違いを意識して使い分けることが大切です。
- 現在の場所を一覧表示する:
ls - 正式名称で実行する:
Get-ChildItem - PowerShellの別名を確認する:
Get-Alias ls - 隠しファイルも含める:
ls -Force
コマンドプロンプトでlsが使えない理由と、代わりになるDIRコマンド
コマンドプロンプトでlsを実行して「’ls’ は、内部コマンドまたは外部コマンド…として認識されていません。
」と表示されるのは、故障ではありません。
lsは本来Linux・UNIX系OSで広く使われるコマンド名であり、従来のWindowsコマンドプロンプトには標準搭載されていないためです。
コマンドプロンプトでは、同じくファイルとフォルダの一覧を表示するdirを使います。
たとえばdirと入力すれば、現在のフォルダの内容、更新日時、サイズ、ファイル数などを確認できます。
無理にlsを追加設定しなくても、Windowsを操作するだけならdirを覚えれば十分に実用的です。
一方でLinuxと共通した操作感を求める場合は、PowerShell、WSL、Git Bashなどを利用する方法があります。
- コマンドプロンプトで一覧を出す:
dir - 特定フォルダを表示する:
dir C:\Users - 画面ごとに停止する:
dir /p - ファイル名だけを見やすく表示する:
dir /b
windows lsを実行する前に確認したい起動方法とカレントディレクトリ
コマンドを入力する前に、どのアプリを起動しているかと、現在どのフォルダを操作対象にしているかを確認しましょう。
スタートメニューで「cmd」と検索して起動した画面はコマンドプロンプトであり、一覧表示の基本コマンドはdirです。
「PowerShell」または「Windows Terminal」でPowerShellプロファイルを開いた場合は、lsを使えます。
また、コマンドは原則として現在地であるカレントディレクトリに対して実行されます。
たとえば表示がC:\Users\UserName>なら、そのユーザーフォルダが対象です。
意図しない場所で削除や移動をしないためにも、一覧表示の前に現在地を確認し、必要に応じてcdで目的のフォルダへ移動してください。
| 確認したい項目 | コマンドプロンプト | PowerShell |
|---|---|---|
| 現在地の確認 | cd |
pwd または Get-Location |
| 一覧表示 | dir |
ls または dir |
| フォルダ移動 | cd パス |
cd パス |
Windows lsの代わりにdirを使う基本方法
コマンドプロンプトでWindows lsの代わりを探している場合、まず覚えるべきコマンドはdirです。
dirは現在のフォルダ、または指定したフォルダ内にあるファイルとサブフォルダを一覧表示するWindows標準コマンドです。
追加ソフトのインストールや設定は必要なく、Windowsの多くの環境でそのまま利用できます。
単にdirと入力するだけでも、名前、更新日時、サイズ、フォルダかどうかといった情報を確認できます。
さらに、ワイルドカードによる絞り込み、表示順の変更、隠しファイルの表示なども可能です。
最初からすべてのオプションを暗記する必要はなく、基本表示、名前指定、属性確認、並べ替えの順に覚えると効率的です。
DIRでファイルとフォルダの一覧を表示するWindowsコマンド
コマンドプロンプトでdirを実行すると、現在のカレントディレクトリに含まれるファイルとフォルダが表示されます。
出力には通常、更新日時、<DIR>というフォルダの印、ファイルサイズ、名前が含まれます。<DIR>と表示された行はフォルダであり、数値が表示された行は主にファイルです。
別の場所を確認したいときは、dir C:\Usersのように、dirの後ろへ対象フォルダのパスを指定します。
画面に結果が収まらない場合はdir /pを使うと、1画面ごとに停止しながら確認できます。
一覧を名前だけで簡潔に出したい場合はdir /bが便利で、バッチファイルでの利用にも向いています。
- 現在のフォルダを表示する:
dir - 指定フォルダを表示する:
dir C:\Users\Public - 1画面ごとに表示する:
dir /p - 名前だけを表示する:
dir /b - ファイルとフォルダの数も確認する:
dir
dirコマンドで特定のファイル名・拡張子を指定する方法
dirでは、ファイル名の一部や拡張子を指定して、表示する対象を絞り込めます。
たとえば、現在のフォルダにあるテキストファイルだけを調べるなら、dir *.txtを実行します。
アスタリスクの*は任意の文字列を表すワイルドカードで、report*ならreportで始まる名前、*2024*なら2024を含む名前を検索できます。
フォルダを指定して検索する場合は、dir C:\work\*.csvのようにパスと条件を続けて書きます。
なお、dirのワイルドカード検索は基本的に指定したフォルダ内が対象です。
配下のサブフォルダもまとめて探したい場合は、後述する/sオプションを追加してください。
| 目的 | 入力例 | 表示対象 |
|---|---|---|
| txtファイルだけを見る | dir *.txt |
.txtで終わる項目 |
| reportで始まる名前を探す | dir report* |
reportから始まる項目 |
| 名前に2024を含む項目を探す | dir *2024* |
2024を含む項目 |
| 指定フォルダ内のCSVを見る | dir C:\work\*.csv |
work内のCSVファイル |
DIRの主なオプション:サイズ・時刻・隠しファイルを確認する
dirは何も指定しなくても更新日時とサイズを表示しますが、オプションを加えることで確認しやすい形に変えられます。
特に覚えておきたいのは、隠しファイルも表示する/a、サブフォルダまで検索する/s、3桁区切りを省略してサイズを扱いやすくする/-cです。
隠しファイルやシステムファイルは通常のdirでは表示されないため、設定ファイルの有無を調べるときはdir /aを使います。
また、日時表示はファイルの更新日時を確認する用途で役立ちます。
ファイルサイズはバイト単位で表示されるため、大きなファイルを探すときはサイズ順のソートと組み合わせると便利です。
オプションはdir /a /sのように複数指定できます。
- 隠しファイルを含めて表示する:
dir /a - 隠しファイルだけを表示する:
dir /a:h - サブフォルダも再帰的に検索する:
dir /s - 3桁区切りなしでサイズを表示する:
dir /-c - ファイル名だけを再帰表示する:
dir /s /b
名前順・更新時刻順・サイズ順・逆順にソートして見やすくする
dirの/oオプションを使うと、一覧の並び順を変更できます。
標準の表示順では目的のファイルを見つけにくい場合もあるため、名前、更新日時、サイズのどれを優先したいかに応じてソートしましょう。
名前順に並べる場合はdir /o:n、更新日時が新しい順に確認したい場合はdir /o:-d、大きいファイルから探す場合はdir /o:-sを使います。-は逆順を意味するため、日時なら新しい順、サイズなら大きい順にしたいときに付けます。
たとえば容量不足の原因を探すなら、dir /o:-sで大きなファイルを上から確認できます。
複数の条件も指定できるため、名前順を基本にしつつフォルダを先に表示することも可能です。
| 並べ替えの目的 | コマンド | 記号 |
|---|---|---|
| 名前順にする | dir /o:n |
n:name |
| 新しい更新日時順にする | dir /o:-d |
d:date、-:逆順 |
| 大きいサイズ順にする | dir /o:-s |
s:size、-:逆順 |
| フォルダを先にする | dir /o:g |
g:group directories first |
PowerShellのlsコマンドを初心者向けに解説
PowerShellを利用する場合は、Windowsでもlsを使ってファイルとフォルダの一覧を表示できます。
ただしPowerShellのlsはLinuxやmacOSにあるlsそのものではなく、PowerShellのGet-ChildItemというコマンドレットに付けられた別名です。
見た目は似ていても、指定できるオプションや後続処理の考え方には違いがあります。
PowerShellは、一覧表示した結果を単なる文字列ではなく、ファイル情報を持つオブジェクトとして扱える点が大きな特徴です。
そのため、ファイルのみの抽出、条件に合う項目の絞り込み、CSVへの出力などを柔軟に行えます。
初心者はまずls、ls -Force、ls -Recurseを使い、必要に応じて正式名称のGet-ChildItemも覚えるとよいでしょう。
PowerShellのlsはGet-ChildItemの別名:dirとの表示の違い
PowerShellではls、dir、Get-ChildItemのいずれを入力しても、基本的には同じGet-ChildItemが実行されます。
つまり、PowerShell上のdirはコマンドプロンプトにある従来のdirコマンドとは別物として扱われます。
PowerShellの表示では、Mode、LastWriteTime、Length、Nameといった列が表示されるのが一般的です。
Mode列のdはディレクトリ、aはアーカイブ属性などを示します。
どのコマンドが実行されるか不安なときは、Get-Command lsやGet-Alias lsで確認できます。
スクリプトでは意味が明確なGet-ChildItemを使い、対話操作では短いlsを使うという使い分けもおすすめです。
| 入力する名前 | PowerShellでの実体 | 主な用途 |
|---|---|---|
ls |
Get-ChildItemの別名 | Linux風に素早く一覧を見る |
dir |
Get-ChildItemの別名 | Windows風の名前で一覧を見る |
Get-ChildItem |
正式なコマンドレット名 | スクリプトや詳細な指定 |
PowerShellでファイルのみ・ディレクトリのみを指定して表示する
PowerShellでは、ls -Fileを使うとファイルだけ、ls -Directoryを使うとフォルダだけを一覧表示できます。
コマンドプロンプトのdirでも属性指定はできますが、PowerShellでは目的に対応したわかりやすいパラメーターを使える点が便利です。
たとえば、フォルダだけ確認して移動先を探したいときはls -Directoryが役立ちます。
逆に、処理対象となるファイル名だけを確認したいときはls -Fileを使います。
特定の拡張子に限定するなら、ls *.log -Fileのようにパスの指定と組み合わせられます。
さらに複雑な条件では、Where-Objectをパイプでつなげて、サイズや更新日時を条件に絞り込むことも可能です。
- ファイルだけを表示する:
ls -File - フォルダだけを表示する:
ls -Directory - txtファイルだけを表示する:
ls *.txt -File - サブフォルダ内も含めたフォルダ一覧:
ls -Directory -Recurse - 100MB以上のファイルを探す:
ls -File | Where-Object Length -gt 100MB
PowerShellのオプションで隠しファイルやサブフォルダを表示する
PowerShellのlsでは、通常表示されない隠しファイルやシステム属性の項目を確認する際に-Forceを使います。
たとえばls -Forceを実行すると、通常の一覧では見えない項目も含めて表示されます。
また、配下のサブフォルダを再帰的にたどって一覧を取得したい場合は-Recurseを指定します。ls -Recurseは大量のファイルがある場所では結果が多くなり、処理にも時間がかかることがあるため、対象パスや拡張子を絞って使うと安全です。
たとえばls -Path C:\work -Filter *.txt -Recurseなら、workフォルダ以下のtxtファイルを探せます。
表示を読みやすくしたいときは、Select-Objectで名前、更新日時、サイズなど必要な列だけに絞る方法も有効です。
- 隠しファイルを含める:
ls -Force - サブフォルダも含める:
ls -Recurse - 隠しファイルとサブフォルダを含める:
ls -Force -Recurse - txtだけを再帰検索する:
ls -Filter *.txt -Recurse - 名前と更新日時だけを表示する:
ls | Select-Object Name, LastWriteTime
PowerShellでlsが期待どおりに動かないときの確認ポイント
PowerShellでlsを入力しても期待した結果にならない場合は、まず本当にPowerShellを開いているかを確認してください。
Windows Terminalは複数のシェルを起動できるため、タブがコマンドプロンプトになっているとlsは標準では使えません。
次に、Linux用のls -laのようなオプションをそのまま入力していないかを確認しましょう。
PowerShellでは隠しファイルの表示は-aではなく-Forceであり、再帰表示は-Rではなく-Recurseです。
また、同名の関数やエイリアスが独自設定で上書きされている可能性もあります。Get-Command ls -Allを実行すると、現在の環境でlsが何として認識されているかを調べられます。
| 症状 | 主な原因 | 確認・対処 |
|---|---|---|
| lsが認識されない | cmdを開いている | PowerShellを起動する |
| Linuxのオプションでエラーになる | オプションの仕様が異なる | -Forceや-Recurseを使う |
| 結果が多すぎる | Recurseで全階層を検索している | パスや-Filterで絞る |
| lsの動作が通常と異なる | 別名・関数が変更されている | Get-Command ls -Allで調べる |
cdでフォルダを移動して一覧を表示する手順
dirやlsで一覧を表示するときは、目的のファイルがあるフォルダへ移動してから実行するのが基本です。
この現在操作している場所をカレントディレクトリといい、移動にはcdコマンドを使います。
cdはコマンドプロンプトとPowerShellの両方で利用できるため、Windowsのコマンド操作を始めるなら優先して覚えたいコマンドです。
たとえばDownloadsフォルダに移動してからdirやlsを実行すれば、ダウンロードしたファイルだけを確認できます。
パスの区切りはWindowsでは通常バックスラッシュの\を使います。
ドライブをまたぐ移動、空白入りのフォルダ名、親フォルダへ戻る書き方もあわせて理解すると、迷わず目的の場所を操作できるようになります。
cdコマンドでカレントディレクトリを変更する基本
cdの後ろにフォルダ名またはパスを指定すると、カレントディレクトリを変更できます。
現在地にある子フォルダへ移動するなら、cd Documentsのようにフォルダ名だけで指定できます。
ひとつ上の親フォルダへ戻る場合は、cd ..を使います。
ユーザーフォルダなど、ドライブの先頭から完全な場所を指定する書き方は絶対パスと呼ばれ、cd C:\Users\UserName\Documentsのように入力します。
一方、現在地を基準にして指定する書き方は相対パスです。
移動後はコマンドプロンプトならdir、PowerShellならlsを実行し、表示内容が意図したフォルダのものか確認しましょう。
- 現在地の子フォルダへ移動する:
cd Documents - 親フォルダへ戻る:
cd .. - 2階層上へ戻る:
cd ..\.. - 絶対パスで移動する:
cd C:\Users\UserName\Downloads - 移動後に一覧を見る:
dirまたはls
Windows CDでドライブをまたいで移動する方法
WindowsではCドライブ、Dドライブ、USBメモリなど、複数のドライブを使うことがあります。
コマンドプロンプトで別のドライブへ移動する場合、cd D:\workだけではカレントドライブがCのままになることがあるため注意が必要です。
確実にドライブとフォルダをまとめて移動するには、cd /d D:\workと入力します。/dはドライブ文字も変更する指定で、コマンドプロンプトで特に重要です。
PowerShellではcd D:\workだけでドライブをまたいで移動できます。
なお、単にD:と入力してDドライブへ切り替え、その後にcd workとする方法もあります。
使用中の環境がcmdかPowerShellかによる違いを理解しておくと、移動できないという混乱を防げます。
| 環境 | Dドライブのworkへ移動する例 | ポイント |
|---|---|---|
| コマンドプロンプト | cd /d D:\work |
ドライブ変更には/dを付ける |
| コマンドプロンプト | D: → cd work |
2段階で移動する方法 |
| PowerShell | cd D:\work |
通常はそのまま移動できる |
空白を含むフォルダ名・パスを指定するときの書き方
フォルダ名やファイル名に空白が含まれるパスを指定する場合は、パス全体をダブルクォーテーションで囲みます。
たとえば「C:\Program Files」へ移動したいときは、cd "C:\Program Files"と入力してください。
引用符を付けずにcd C:\Program Filesと入力すると、空白の手前までをパスとして解釈し、意図した移動ができないことがあります。
これはcdだけでなく、dir、PowerShellのls、copyなどでパスを指定するときにも共通する基本ルールです。
PowerShellではシングルクォーテーションも利用できますが、初心者はダブルクォーテーションで統一するとわかりやすいでしょう。
入力の手間を減らすには、パスの一部を入力してTabキーを押し、候補を補完する方法も便利です。
- 空白がないパスの例:
cd C:\work\logs - 空白があるパスの例:
cd "C:\Program Files" - 空白がある場所を一覧表示する例:
dir "C:\Users\UserName\My Documents" - PowerShellで空白入りの場所を見る例:
ls "C:\Program Files" - Tabキーで候補を補完して入力ミスを減らす
pwdの代わりに現在地を確認するWindowsコマンドとPowerShellコマンド
LinuxやmacOSでは現在地を確認するためにpwdを使いますが、Windowsでは利用するシェルによって確認方法が異なります。
コマンドプロンプトでは、引数を付けずにcdと入力すると現在のカレントディレクトリが表示されます。
PowerShellではpwdが利用でき、正式なコマンドレット名はGet-Locationです。
PowerShellのpwdも別名であり、現在地をPathとして表示します。
コマンド実行前に現在地を確認する習慣を付けると、違うフォルダでファイルを削除したり、意図しない場所へ出力したりする事故を防げます。
特にdel、Remove-Item、copyなどを使う前には、現在地と対象パスを二重に確認してください。
| 環境 | 現在地を確認するコマンド | 備考 |
|---|---|---|
| コマンドプロンプト | cd |
引数なしで現在のパスを表示 |
| PowerShell | pwd |
Get-Locationの別名 |
| PowerShell | Get-Location |
正式なコマンドレット名 |
Linux・UNIXの基本コマンドをWindowsでどう置き換える?
LinuxやUNIXの操作経験がある人は、Windowsでもls、cat、cp、grepなどを入力したくなることがあります。
PowerShellでは一部のLinux風コマンド名が別名として使えますが、コマンドプロンプトではWindows標準のコマンドへ置き換える必要があります。
また、同じような用途のコマンドでも、オプション、パスの表記、文字コード、結果の扱い方が異なる場合があります。
たとえば一覧表示はcmdではdir、PowerShellではlsまたはGet-ChildItemを使うのが基本です。
コマンド名だけを置き換えるのではなく、使っているシェルに合った書式を選ぶことが重要です。
ここでは、日常的なファイル操作や文字列検索でよく使われるLinuxコマンドと、Windowsのコマンドプロンプト・PowerShellでの代表的な対応を整理します。
catの代わりにファイル内容を表示するtypeとGet-Content
Linuxのcatはファイル内容を標準出力へ表示するコマンドですが、コマンドプロンプトではtypeが対応する基本コマンドです。
たとえばtype memo.txtと入力すると、memo.txtの内容を画面上で確認できます。
PowerShellではGet-Content memo.txtを使う方法が基本で、gcやcatが別名として使える環境もあります。
大きなログファイルを末尾から確認したいときは、PowerShellのGet-Content -Tail 20が便利です。
一方、typeはテキストファイルの簡易確認向けであり、バイナリファイルの内容を見る用途には適しません。
日本語が文字化けする場合は、ファイルの文字コードと実行環境の文字コード設定も確認しましょう。
| 目的 | コマンドプロンプト | PowerShell |
|---|---|---|
| ファイル全体を表示する | type memo.txt |
Get-Content memo.txt |
| 先頭を確認する | more memo.txt |
Get-Content memo.txt -TotalCount 20 |
| 末尾を確認する | 標準機能では限定的 | Get-Content memo.txt -Tail 20 |
| 追記を監視する | 標準機能では限定的 | Get-Content memo.txt -Wait |
cp・mv・rmに相当するWindowsコマンド:コピー・移動・削除の基本
Linuxのcp、mv、rmは、それぞれコピー、移動、削除を行う代表的なコマンドです。
コマンドプロンプトでは、ファイルコピーにcopy、移動にmove、ファイル削除にdelを使います。
フォルダをコピーする場合はxcopyやrobocopy、フォルダを削除する場合はrmdirまたはrdを使います。
PowerShellではCopy-Item、Move-Item、Remove-Itemという一貫した名前のコマンドレットが利用できます。
削除コマンドは元に戻せないことがあるため、実行前にdirまたはlsで対象を確認してください。
特に/sや-Recurseを付けたフォルダ削除は、配下の内容も対象になるので慎重に扱う必要があります。
| 操作 | コマンドプロンプト | PowerShell |
|---|---|---|
| ファイルをコピーする | copy a.txt backup\ |
Copy-Item a.txt backup\ |
| ファイルを移動する | move a.txt archive\ |
Move-Item a.txt archive\ |
| ファイルを削除する | del a.txt |
Remove-Item a.txt |
| フォルダを削除する | rmdir /s folder |
Remove-Item folder -Recurse |
grepの代わりに文字列を検索するfindstrとSelect-String
ログや設定ファイルから特定の文字列を探すLinuxのgrepに相当する代表的なコマンドは、コマンドプロンプトではfindstr、PowerShellではSelect-Stringです。
たとえばfindstr "ERROR" app.logと入力すると、app.log内でERRORを含む行を検索できます。
PowerShellではSelect-String -Pattern "ERROR" -Path app.logのように指定し、より柔軟に検索できます。
複数ファイルを対象にする、正規表現を利用する、検索結果からさらに条件を付けるといった操作は、PowerShellのほうが行いやすい場面が多いです。
大文字と小文字を区別したいか、サブフォルダも検索対象にするかによって書式が変わるため、まずは小さなファイルで動作を確認しましょう。
- cmdで文字列を検索する:
findstr "ERROR" app.log - cmdで複数のtxtを検索する:
findstr /s /i "keyword" *.txt - PowerShellで文字列を検索する:
Select-String -Pattern "ERROR" -Path app.log - PowerShellで配下を再帰検索する:
Select-String -Pattern "keyword" -Path .\* -Recurse - PowerShellで大文字小文字を区別する:
Select-String -CaseSensitive -Pattern "Error" -Path app.log
LinuxのlsオプションとWindowsのdir・PowerShellの対応表
LinuxのlsとWindowsのdir、PowerShellのlsは一覧表示という目的こそ共通しますが、オプションの書き方は同一ではありません。
Linuxのls -aに近い隠し項目の表示は、コマンドプロンプトではdir /a、PowerShellではls -Forceです。
Linuxのls -Rに近いサブフォルダを含む表示は、cmdではdir /s、PowerShellではls -Recurseを使います。
Linuxのls -lに完全に一致する単一の指定はありませんが、dirの標準表示やPowerShellの表示で、日時・サイズなどの情報を確認できます。
移植性が必要な手順書やスクリプトでは、実行環境ごとのコマンドを明示し、LinuxのオプションをそのままWindowsへ流用しないようにしましょう。
| 確認したい内容 | Linux・UNIX | cmd | PowerShell |
|---|---|---|---|
| 基本一覧 | ls |
dir |
ls |
| 隠し項目を含める | ls -a |
dir /a |
ls -Force |
| サブフォルダも表示する | ls -R |
dir /s |
ls -Recurse |
| 詳細情報を確認する | ls -l |
dir |
ls |
| 名前だけを表示する | ls -1 |
dir /b |
ls | Select-Object -Expand Name |
コマンドプロンプトとPowerShell、どちらを使うべき?
Windowsで一覧表示を行う際、コマンドプロンプトとPowerShellのどちらを選ぶべきか迷う人も多いでしょう。
結論として、古くからあるWindowsコマンドを簡単に実行したいならコマンドプロンプト、条件を付けた検索や自動化まで行いたいならPowerShellが向いています。
コマンドプロンプトはdir、copy、delなどの基本操作を素早く行える軽量な環境です。
PowerShellはファイル情報をオブジェクトとして処理でき、一覧結果を絞り込み、並べ替え、別形式で保存するといった作業を行いやすい特徴があります。
どちらか一方だけを使わなければならないわけではありません。
基本のdirとcdを理解したうえで、lsやGet-ChildItemを使いたくなったらPowerShellへ進むと、無理なく使い分けられます。
コマンドプロンプトが向く場面:昔からのWindowsコマンドを使うとき
コマンドプロンプトは、Windowsで長く使われてきたcmd.exeを基盤とするコマンド実行環境です。
ファイル一覧の確認、フォルダ移動、簡単なコピーや削除など、基本的な操作を手早く済ませたい場合に向いています。
特に、既存のバッチファイルでdir、copy、del、ifなどが使われている場合は、コマンドプロンプトで実行・修正すると理解しやすいでしょう。
古い業務手順書やソフトウェアの説明では、cmd向けのコマンドが案内されていることも少なくありません。
ただし、標準ではlsを使えず、複雑な条件でのファイル抽出やデータ処理には不向きな面があります。
まずWindows固有の基本操作を覚えたい初心者は、dirとcdから始める方法がわかりやすい選択です。
- 既存の.batや.cmdファイルを実行・編集したい
dirやcopyなど基本コマンドだけを使いたい- 古いWindows向けの手順書どおりに操作したい
- 一時的にフォルダやファイルの状態を確認したい
- PowerShell固有の構文をまだ覚えていない
PowerShellが向く場面:ファイル操作の自動化や柔軟な絞り込み
PowerShellは、単発のコマンド操作だけでなく、繰り返し作業の自動化や、ファイル情報を条件で絞り込む作業に向いています。
たとえば、更新日が一定期間より新しいファイルだけを探す、拡張子ごとに一覧を作る、結果をCSVへ保存するといった処理を1行またはスクリプトで実行できます。lsやdirで一覧を取得したあと、パイプ記号の|でWhere-ObjectやSort-Objectへ渡せる点が大きな利点です。
Windowsの管理作業、ログ調査、定期バックアップ、複数フォルダの棚卸しなどでは、PowerShellを使う価値が高まります。
ただし、PowerShellのdirはcmdのdirとオプションが異なるため、画面の種類を意識してコマンドを入力してください。
- 更新日時、サイズ、拡張子などでファイルを絞り込みたい
- サブフォルダを含めて大量のファイルを調査したい
- 一覧結果をCSVやテキストへ出力したい
- 同じ処理を.ps1スクリプトとして自動化したい
- Linux経験を生かして
lsから操作を始めたい
exeやバッチファイルを実行するときに知っておきたいプロンプトの違い
exeファイルやバッチファイルを実行する場合も、コマンドプロンプトとPowerShellでは注意点があります。
コマンドプロンプトでは、現在のフォルダにあるsample.exeやtask.batを、ファイル名を指定して実行できる場面が一般的です。
PowerShellでは安全性のため、現在のフォルダにある実行ファイルを起動するときは.\sample.exeのように.\を付ける必要があります。
これは、意図しないプログラムを誤って実行しないためのPowerShellの仕様です。
また、PowerShellスクリプトである.ps1ファイルは、実行ポリシーによって実行が制限されることがあります。
内容や入手元が不明なexe、bat、ps1を管理者権限で安易に実行せず、対象ファイルと現在地を確認してから操作しましょう。
| 対象 | コマンドプロンプトの例 | PowerShellの例 |
|---|---|---|
| 現在地のexeを実行 | sample.exe |
.\sample.exe |
| 現在地のbatを実行 | task.bat |
.\task.bat |
| PowerShellスクリプトを実行 | powershell -File script.ps1 |
.\script.ps1 |
Windows lsで迷わないための早見表と実践例
Windowsでlsの代わりを使いこなすコツは、まず利用中の環境を見分け、目的に合う基本コマンドを選ぶことです。
コマンドプロンプトなら一覧表示はdir、PowerShellならlsまたはGet-ChildItemを使います。
フォルダ移動は両方でcdが使えますが、cmdでドライブをまたぐ場合はcd /dが必要になる点に注意してください。
また、単に一覧を見るだけなのか、拡張子で探すのか、隠しファイルやサブフォルダも対象にするのかで、追加するオプションが変わります。
以下の早見表と実践例を参考に、まずは安全な確認操作から試しましょう。
削除や移動といった変更操作は、必ずdirまたはlsで対象を確認したあとに実行することが大切です。
一覧表示・移動・内容確認でよく使うコマンド早見表
Windowsで日常的に使うコマンドは、一覧表示、移動、現在地確認、ファイル内容確認の4種類から覚えると実践しやすくなります。
コマンドプロンプトではdirを中心に使い、PowerShellではls、pwd、Get-Contentなどを組み合わせます。
同じ目的でも環境ごとにコマンドやオプションが異なるため、コピー&ペーストする前にcmd用かPowerShell用かを確認してください。
特に/sのようにスラッシュで指定するcmdのオプションと、-Recurseのようにハイフンで指定するPowerShellのパラメーターは混同しやすいポイントです。
下表をブックマークするか、よく使うものをメモしておくと、Windows lsで迷ったときにすぐ確認できます。
| 目的 | コマンドプロンプト | PowerShell |
|---|---|---|
| 現在地の一覧を見る | dir |
ls |
| txtファイルだけを見る | dir *.txt |
ls *.txt -File |
| 隠し項目も表示する | dir /a |
ls -Force |
| 配下も含めて探す | dir /s |
ls -Recurse |
| フォルダを移動する | cd /d D:\work |
cd D:\work |
| 現在地を確認する | cd |
pwd |
| テキスト内容を確認する | type file.txt |
Get-Content file.txt |
txtファイルを探してサイズと更新時刻を確認する実践例
ここでは、Documentsフォルダ以下からtxtファイルを探し、ファイル名、サイズ、更新時刻を確認する例を紹介します。
コマンドプロンプトでは、まずcd /d C:\Users\UserName\Documentsで目的の場所へ移動し、dir *.txt /sを実行します。
これにより、配下のサブフォルダも含めたtxtファイルが、更新日時とサイズ付きで表示されます。
PowerShellでは、ls -Path "C:\Users\UserName\Documents" -Filter *.txt -File -Recurseを使うと同様に検索できます。
必要な列だけに絞るには、PowerShellでSelect-Object Name, Length, LastWriteTimeをつなげます。
実際に使うときはUserNameの部分を自分のWindowsユーザー名へ置き換え、検索範囲が広すぎる場合は対象フォルダを限定してください。
| 環境 | 実行例 | 確認できる内容 |
|---|---|---|
| コマンドプロンプト | dir "C:\Users\UserName\Documents\*.txt" /s |
配下のtxt、更新日時、サイズ |
| PowerShell | ls -Path "C:\Users\UserName\Documents" -Filter *.txt -File -Recurse |
配下のtxtファイル情報 |
| PowerShellで列を絞る | ls -Filter *.txt -File -Recurse | Select-Object Name, Length, LastWriteTime |
名前、サイズ、更新日時 |
Windowsでlsの代わりを使い分ける結論:dirから始めてPowerShellへ
Windowsでlsの代わりを探しているなら、コマンドプロンプトではdir、PowerShellではlsを使うと覚えておけば問題ありません。
Windows操作が初めての人や、既存のバッチファイルを扱う人は、まずcdとdirを使ってフォルダ移動と一覧表示に慣れるのがおすすめです。
隠しファイルの確認、サブフォルダを含む検索、ファイルのみの抽出、一覧の加工をしたくなったら、PowerShellのlsとGet-ChildItemを活用しましょう。
Linuxのlsオプションをそのまま使おうとせず、cmdでは/aや/s、PowerShellでは-Forceや-Recurseを選ぶことがポイントです。
まずは現在地を確認し、一覧を表示してから操作する習慣を付ければ、Windowsのコマンド操作で迷いにくくなります。
- cmdで一覧を見るなら:
dir - PowerShellで一覧を見るなら:
ls - 現在地を変えるなら:
cd - cmdで隠し項目を出すなら:
dir /a - PowerShellで隠し項目を出すなら:
ls -Force - 削除や移動の前には、必ず対象を一覧で確認する


