* PowerShell Coreで,指定したディレクトリー内の画像ファイルを正規表現で検索し,画像ビューアソフトで開くスクリプト

:CATEGORIES: PowerShell Core

 昨日の夕方遅めの時間に宇出津新港に買い物に出掛ける前に作成し終えたスクリプトですが,2箇所コードを追加しました。範囲指定の書式のチェックと,始まりが終わりより大きい場合に値を入れ替える処理です。

 自分用なのでけっこう適当に作っていますが,Linuxの環境を前提にしています。画像ビューアにはeogというコマンドを使っています。標準では入っていないですが,aptでインストールできると思います。

#!/snap/bin/pwsh
Param(
	[String]$targetPath = "/home/a66/a_screenshot/ts",
	[String]$test,
	[String]$regex = "^200[1-3]-..-...*\.jpg$",
	[String] $No = "False",
	[String] $View = "False"
)

if ($No -Eq "True") {
	[Int]$i = 1
	Get-ChildItem -Path $targetPath -Recurse  -Include *.jpg,*.jpeg,*.png | Where-Object { $_.name -match  $regex }| % { $n = $_.name; echo "$i $($_.FullName)"; $i += 1; }
	$i = $Null
	exit
}

if ($View -Eq "True") {
	[String[]]$list = Get-ChildItem -Path $targetPath -Recurse  -Include *.jpg,*.jpeg,*.png | Where-Object { $_.name -match  $regex }| % { $n = $_.name; echo "$($_.FullName)"; }
	if ($list.Length -eq 0) { Write-Host "該当なし"; exit;}

	[Int]$i = 1
	$list | % { Write-Host "${i} $($list[$i - 1])"; $i += 1; }

	$list = $list -ne $Null
	Write-Host "$($list.length)件取得しました。画像ビューアで表示する範囲を指定(例:9-13,1つの場合は9だけ)"
	[string]$renge = Read-Host
	if ($renge -notmatch "^([0-9]+-[0-9]+|[0-9]+)$")
	{	Write-Host "書式が違います。"; exit; }
	
	if ($renge.IndexOf('-') -ge 0) {
		[Int]$StartPoint = $renge.split('-')[0] - 1
		[Int]$EndPoint = $renge.split('-')[1] - 1
		if ($StartPoint -gt $EndPoint) { $tmp1 = $StartPoint; $tmp2 = $EndPoint; $StartPoint = $tmp2; $EndPoint = $tmp1; }
		for($i=$StartPoint; $i -le $EndPoint; $i++) {
			eog $list[$i]
		}
		exit

	} else {
		eog $list[[Int]$renge]
		exit
	}
}

if (! [string]::IsNullOrEmpty($test)) {
	Write-Host '何もしません。'
	exit
}

Get-ChildItem -Path $targetPath -Recurse  -Include *.jpg,*.jpeg,*.png | Where-Object { $_.name -match  $regex }| % { $n = $_.name; echo "$($_.FullName)";}

Write-Host "# {$($regex))}で検索しました。"

実行結果:
```
PS /home/a66/pwsh> ./jpg-filename-search.ps1 -regex '2020-10-25.*' -View True

1 /home/a66/a_screenshot/ts/2020-10-25-125521_モトケンさんがリツイート感熱紙(疑似太陽炉)@thermalpaper00·14時間先日の迷い子を助けた小学生のニュースの際の反応もそうだ.jpg
2 /home/a66/a_screenshot/ts/2020-10-25-125734_モトケンさんがリツイート弁護士 市川 寛@imarockcaster42·14時間「主語が大きい」との批判を受けるツイートが散見される今日.jpg
3 /home/a66/a_screenshot/ts/2020-10-25-125848_モトケン@motoken_tw返信先: @joytamachanさん最初の発言者の発言内容が不十分だったり分かりにくい場合は、その点について.jpg
4 /home/a66/a_screenshot/ts/2020-10-25-131405_深澤諭史さんがリツイートアラン・スミシー@bluebuggle·31分注文していた本が届いた。.jpg
5 /home/a66/a_screenshot/ts/2020-10-25-133015_深澤諭史さんがリツイートリーチ一発ツモ裏1@luckymangan·1時間だって執行部が無惨様と変わらない言動してますし….jpg
6 /home/a66/a_screenshot/ts/2020-10-25-133122_@k_sawmen魔界を愛する普通の大魔王。人類滅亡を企む悪の若手弁護士の会、略して「めつわか」の代表です。めつわかメンバーは随時募集中です.jpg
7 /home/a66/a_screenshot/ts/2020-10-25-144555_gmail-sent。ps1 - Visual Studio Code.jpg
8 /home/a66/a_screenshot/ts/2020-10-25-201510_深澤諭史さんがリツイート弁護士大西洋一@o2441·1時間御意。.jpg
9 /home/a66/a_screenshot/ts/2020-10-25-201705_深澤諭史さんがリツイート弁護士 中村憲昭@nakanori930·1時間全く同感です。あっという間に枯渇しちゃいますよね。長年かけて築いた.jpg
10 /home/a66/a_screenshot/ts/2020-10-25-201804_深澤諭史さんがリツイートきよし弁護士@n5M5ULaRFaY3Ayz·1時間この信頼がなくなってしまったら、弁護士業務も難しくなってしまい.jpg
11 /home/a66/a_screenshot/ts/2020-10-25-201841_深澤諭史さんがリツイート齋藤裕@bengyutakasaito·1時間禿同.jpg
12 /home/a66/a_screenshot/ts/2020-10-25-204104_深澤諭史さんがリツイート小倉秀夫@chosakukenho·3時間科学的知見をもとに政府の諮問に答申しまたは提言等をするだけの組織がどうや.jpg
13 /home/a66/a_screenshot/ts/2020-10-25-204543_小倉秀夫@chosakukenho被告人に下される刑が死刑ではなく無期懲役にとどまることによる遺族の不快感と、無実の被告人が死刑判決が下され.jpg
14 /home/a66/a_screenshot/ts/2020-10-25-205053_ふなざわひろゆき@FLetlRmdM7gs5vS死刑廃止論は、被害者遺族の痛切な思いは当然受け止めた上で(なお、死刑を望まない遺族もいる。原.jpg
15 /home/a66/a_screenshot/ts/2020-10-25-205138_小倉秀夫@chosakukenho初期捜査段階でガバッとかき集めた資料の中に被告人が真犯人であることを疑わせるものがあっても、これを弁護人に.jpg
16 /home/a66/a_screenshot/ts/2020-10-25-205853_新田はちろう(富山県知事候補)@nitta8chan·21時間富山県知事候補の新田はちろうです。投票前にぜひご覧ください。.jpg
17 /home/a66/a_screenshot/ts/2020-10-25-205920_新田はちろう(富山県知事候補)@nitta8chan富山県知事選挙に立候補した新田はちろうです。県政に民間企業の当たり前を取り入れ、将来世代.jpg
18 /home/a66/a_screenshot/ts/2020-10-25-205939_石井 たかかず(富山県知事)@ishii_takakazu5石井隆一です。危機こそチャンス!アフター・コロナ時代のモデル県となる、人が輝く「.jpg
19 /home/a66/a_screenshot/ts/2020-10-25-213423_豪弁 足立敬太 @大事なのは感謝と恩返しだ@keita_adachi札幌は〜まーあかん、汚れとる はんかくさい病気がはやっとる.jpg
20 /home/a66/a_screenshot/ts/2020-10-25-213808_豪弁 足立敬太 @大事なのは感謝と恩返しださんがリツイートたろう teacher@tomo_law_·2時間被疑者国選が開始する前、「当地.jpg
21 /home/a66/a_screenshot/ts/2020-10-25-213902_豪弁 足立敬太 @大事なのは感謝と恩返しだ@keita_adachi·1時間現職知事が8時で落選確実ってどういうこと.jpg
22 /home/a66/a_screenshot/ts/2020-10-25-215046_NHKスペシャル公式@nhk_n_sp·18 d’oct。【ただいま放送中】 #NHKスペシャル 「香港 激動の記録~市民と“自由”の行方~.jpg
23 /home/a66/a_screenshot/ts/2020-10-25-215141_NHKスペシャル公式@nhk_n_sp·10月18日【ただいま放送中】 #NHKスペシャル 「香港 激動の記録~市民と“自由”の行方~」番組.jpg
24 /home/a66/a_screenshot/ts/2020-10-25-234353_モトケン@motoken_tw返信先: @jupiterthunder_さん, @MC6809EOS9さん君のツイートは見る価値がないので私.jpg
25 /home/a66/a_screenshot/ts/2020-10-25-235145_小倉秀夫@Hideo_Ogura戦争賛美云々以前に、政教分離的にまずくないですかね。「知覧特攻平和観音堂等慰霊碑にて、慰霊式或いは鎮魂式とい.jpg
26 /home/a66/a_screenshot/ts/2020-10-25-235725_奉納\危険生物・弁護士脳汚染除去装置\金沢地方検察庁御中_2020: REGEXP:”観音”/データベース登録済みツイート:2020年10月.jpg
27 /home/a66/a_screenshot/ts/2020-10-25-235838_奉納\危険生物・弁護士脳汚染除去装置\金沢地方検察庁御中_2020: REGEXP:”観音”/データベース登録済みツイート:2020年10月.jpg
27件取得しました。画像ビューアで表示する範囲を指定(例:9-13,1つの場合は9だけ)
9-11
PS /home/a66/pwsh>
```

 久しぶりにxargsとeogの組み合わせでやってみたところ,以前とは挙動が違ったようで画像ファイルが1つだけ表示され,ビューアを閉じるとそれでコマンドの実行が終わっていました。これがきっかけで思わぬ発見がありました。1つは浜木綿弁右衛門という法クラのアカウントのことです。

 それが,「locate -r '2017-11.*.jpg' |grep ブロック|xargs eog」というコマンドの実行で,1つだけ表示されていたスクリーンショットの画像ファイルになります。初めは気にしなかったのですが,10回ほど繰り返しがあって問題に気が付きました。

 最初はeogというアプリの動作が変わったのかと思い,コマンドラインから実行できる軽量の画像ビューアを2つインストールしました。sudo apt install xli と sudo apt install feh です。fehの方は,以前に使ったような憶えがあります。

 eog,xli,fetと動作は同じでした。xargsの方で調べたところ,オプションを付けることで,以前のように連続して画像が開けるようになりました。