PowerShell(\パスを/パスに置換)

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

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

PS C:\Users\takk\aaa> ls
PS C:\Users\takk\aaa> mkdir dir1/dir2/dir3 | out-null
PS C:\Users\takk\aaa> ls -n -r
dir1
dir1\dir2
dir1\dir2\dir3
PS C:\Users\takk\aaa>

では、このディレクトリパスの\を/に置換してみます。

PS C:\Users\takk\aaa> ls -n -r | %{$_.Replace("\","/")}
dir1
dir1/dir2
dir1/dir2/dir3
PS C:\Users\takk\aaa>

正規表現を使う場合。

PS C:\Users\takk\aaa> ls -n -r | %{$_ -Replace("(dir.)","[$&]")}
[dir1]
[dir1]\[dir2]
[dir1]\[dir2]\[dir3]
PS C:\Users\takk\aaa>

ランダムに階層の深いディレクトリを作ってファイルを保存してみます。

PS C:\Users\takk\aaa> 1..5 | %{$r=get-random; $dir=$r -replace("(...)","$&\\");mkdir $dir | out-null;echo HELLO > $dir/f
ile.txt}
PS C:\Users\takk\aaa> ls -n -r
113
182
193
640
890
113\938
113\938\662
113\938\662\3
113\938\662\3\file.txt
182\911
182\911\275
182\911\275\1
182\911\275\1\file.txt
193\133
193\133\520
193\133\520\file.txt
640\446
640\446\641
640\446\641\file.txt
890\224
890\224\140
890\224\140\file.txt
PS C:\Users\takk\aaa>

コメント

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