PowerShell(out-nullで出力を捨てる、再帰的ファイル一覧)

(本記事はPowerShell入門記事としてコチラにもまとめています。)

PowerShell(変数)」の続きです。

PowerShellでディレクトリを作成しようとすると、ディレクトリ作成だけでなく、親切にもたくさんのメッセージを表示してくれます。

PS C:\Users\takk\aaa> mkdir a


    ディレクトリ: C:\Users\takk\aaa


Mode                LastWriteTime     Length Name
----                -------------     ------ ----
d----        2017/06/28     21:19            a


PS C:\Users\takk\aaa>

これはこれで良いのですが、とてもかさばります。
メッセージを表示しないようにするには、out-nullへパイプで渡します。

PS C:\Users\takk\aaa> mkdir b | out-null
PS C:\Users\takk\aaa> ls -n
a
b
PS C:\Users\takk\aaa>

for文を使って深階層のディレクトリを作ってみます。

PS C:\Users\takk\aaa> for($i=0; $i -lt 10; $i++){
>> mkdir $i | out-null
>> cd $i
>> }
>>
PS C:\Users\takk\aaa\0\1\2\3\4\5\6\7\8\9>

ディレクトリ作成と同時にcdしてますので、一番深いディレクトリにまで来てしまいました。
cd ..で、一つ上のディレクトリに切り替わります。

PS C:\Users\takk\aaa\0\1\2\3\4\5\6\7\8\9> cd ..
PS C:\Users\takk\aaa\0\1\2\3\4\5\6\7\8>

面倒なので、ホームディレクトリへ切り替えます。

PS C:\Users\takk\aaa\0\1\2\3\4\5\6\7\8> cd ~
PS C:\Users\takk>

findのように階層を追ってすべて表示する場合は、-Recurseオプションを使います。-rでよいです。-nは-Nameの略で名前のみです。

PS C:\Users\takk\aaa> ls -n -r
0
a
b
0\1
0\1\2
0\1\2\3
0\1\2\3\4
0\1\2\3\4\5
0\1\2\3\4\5\6
0\1\2\3\4\5\6\7
0\1\2\3\4\5\6\7\8
0\1\2\3\4\5\6\7\8\9
PS C:\Users\takk\aaa>

ls -n -rで、ディレクトリだけでなく、ファイルも一覧に表示されます。

PS C:\Users\takk\aaa> echo HELLO > 0\1\2\aa.txt
PS C:\Users\takk\aaa> ls -n -r
0
a
b
0\1
0\1\2
0\1\2\3
0\1\2\aa.txt
0\1\2\3\4
0\1\2\3\4\5
0\1\2\3\4\5\6
0\1\2\3\4\5\6\7
0\1\2\3\4\5\6\7\8
0\1\2\3\4\5\6\7\8\9
PS C:\Users\takk\aaa>

ディレクトリのみに限定する場合は、-Directoryオプション(-di)を使います。

PS C:\Users\takk\aaa> ls -n -r -di
0
a
b
0\1
0\1\2
0\1\2\3
0\1\2\3\4
0\1\2\3\4\5
0\1\2\3\4\5\6
0\1\2\3\4\5\6\7
0\1\2\3\4\5\6\7\8
0\1\2\3\4\5\6\7\8\9
PS C:\Users\takk\aaa>

コメント

  1. […] ← PowerShell(out-nullで出力を捨てる、再帰的ファイル一覧) PowerShell(乱数、コマンド置換) → […]

  2. […] 「PowerShell(out-nullで出力を捨てる、再帰的ファイル一覧)」では、for文で繰り返してmkdirしましたが、実は多階層のディレクトリでも一回で作成することができます。 […]

タイトルとURLをコピーしました