(本記事は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>
コメント
[…] ← PowerShell(out-nullで出力を捨てる、再帰的ファイル一覧) PowerShell(乱数、コマンド置換) → […]
[…] 「PowerShell(out-nullで出力を捨てる、再帰的ファイル一覧)」では、for文で繰り返してmkdirしましたが、実は多階層のディレクトリでも一回で作成することができます。 […]