Skip to content

Instantly share code, notes, and snippets.

@dfinke
Last active October 8, 2019 21:21
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save dfinke/3d0017e0fe4195a5242c796cdfde5960 to your computer and use it in GitHub Desktop.
Save dfinke/3d0017e0fe4195a5242c796cdfde5960 to your computer and use it in GitHub Desktop.
Import-Module PSStringScanner
function selectf {
$ss = New-PSStringScanner ($args -join ' ')
$select = $ss.scanUntil("(?=from )")
$null=$ss.scan("from ")
if($ss.check(" where ")) {
$targetPath = $ss.scanuntil("(?=where )")
$null=$ss.scan("where ")
$whereVar = $ss.scanuntil("(?==~ )")
$null=$ss.scan("=~ ")
$whereValue = $ss.scan(".*")
} else {
$targetPath = $ss.scan(".*")
}
$cmd = "dir {0} | select {1}" -f $targetPath, $select
if($whereVar) {
$cmd += ' | where {{ $_.{0} -match {1} }}' -f $whereVar, $whereValue
}
$cmd | iex
}
#selectf "name,ext*,length from 'C:\temp'"
selectf "name,ext*,length from 'C:\temp' where extension =~ 'png$'" # use a regex
@dfinke
Copy link
Author

dfinke commented Oct 8, 2019

Prints

Name                         Extension  Length
----                         ---------  ------
acn.png                      .png      2089337
adam.png                     .png       126697
amazon.png                   .png        55226
AnamorphicArt.png            .png      1249449
arvixe.png                   .png        17622
AWS+PS.png                   .png        13853
aws.png                      .png       330830
awsX.png                     .png      1000262
BadAnalogyGuy.png            .png       140200
bdd.png                      .png        99822
BeautifulReports.png         .png       220837
BestPractices.png            .png      1389105
beTheSquirrel.png            .png      1248603
blank.png                    .png         2775

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment