PowerShell(指定ファイルの一覧取得)

linuxでやるとfind -name file_4.*、というような一覧の取得を、PowerShellでもやってみます。

まずは実験用フォルダの作成から。

PS C:\Users\takk\aaa> 1..6 | %{$n=1}{$r=random;$dir=$r -replace("(..)","$&\\");mkdir $dir | out-null;1..4 | %{echo $_"    "$r >> $dir/file_$n.txt};$n++}

このようにフォルダとファイルができました。

PS C:\Users\takk\aaa> ls -name -re
12
14
20
57
86
12\74
12\74\06
12\74\06\63
12\74\06\63\23
12\74\06\63\23\file_1.txt
14\53
14\92
14\53\23
14\53\23\53
14\53\23\53\43
14\53\23\53\43\file_2.txt
14\92\16
14\92\16\14
14\92\16\14\68
14\92\16\14\68\file_3.txt
20\20
20\20\97
20\20\97\04
20\20\97\04\40
20\20\97\04\40\file_5.txt
57\93
57\93\43
57\93\43\76
57\93\43\76\7
57\93\43\76\7\file_6.txt
86\03
86\03\02
86\03\02\65
86\03\02\65\2
86\03\02\65\2\file_4.txt
PS C:\Users\takk\aaa>

file_1.txtとfile_2.txt、file_4*のパスを取得します。
-includeオプションを指定して、,(カンマ)で区切ればよいです。
-includeは-iで省略できます。

PS C:\Users\takk\aaa> ls -name -re -i file_1.txt,file_2.txt,file_4.*
12\74\06\63\23\file_1.txt
14\53\23\53\43\file_2.txt
86\03\02\65\2\file_4.txt
PS C:\Users\takk\aaa>

フルパスの取得は、dirを使えばよいです。

PS C:\Users\takk\aaa> cmd /c "dir /b /s file_1.txt file_2.txt file_4.*"
C:\Users\takk\aaa\12\74\06\63\23\file_1.txt
C:\Users\takk\aaa\14\53\23\53\43\file_2.txt
C:\Users\takk\aaa\86\03\02\65\2\file_4.txt
PS C:\Users\takk\aaa>

Leave a Reply

Your email address will not be published. Required fields are marked *

CAPTCHA