34086


PowerShellでフォルダ､ファイル操作のスクリプトを書いているのですが､賢い書き方をご存じであればご教授ください｡

あるフォルダの中には以下のようなファイルが存在します｡

**Test-A001.txt 2017/04/18**  
Test-A001_old.txt 2017/04/10  
**Test-B001_最新.txt 2017/04/19**  
Test-B001.txt 2017/04/11  
**Test-C001.txt 2017/04/18**  
Test-C001_20170417.txt 2017/04/17

この中から､日付が新しい「Test-A|B|C」を取得したい｡  
取得したファイルリストは以下の通りです｡

**Test-A001.txt 2017/04/18  
Test-B001_最新.txt 2017/04/19  
Test-C001.txt 2017/04/18**

よろしくお願いします｡


CC BY-SA 3.0
2017-04-18T02:21:24.940
34085
2017-04-18T04:29:50.037
12388
question
powershell
PowerShell でフォルダ内の"それぞれ"最新ファイルを取得したい｡


「Test-A|B|C」が固定長かつ先頭から始まることが保証されているなら、下記のコードで取れます。

[code]

    $len = "Test-X".Length # グループ化する文字数(6文字)
    $gp = ls | %{$_.Name.Substring(0, [Math]::Min($_.Name.Length, $len))} | group
    $ss = $gp | %{ $s=$_.Name + "*"; ls -Filter $s | sort LastWriteTime -Descending | select -First 1 }
    $ss
    
[/code]

ファイル名の部分文字列をグループ化して、それぞれのグルーブに対して更新日付でソートをかけて最新のファイルを取得します。


CC BY-SA 3.0
2017-04-18T02:57:48.220
34086
2017-04-18T04:29:50.037
2017-04-18T04:29:50.037
9820
9820
34085
answer