ページ

title

告発\金沢地方検察庁\最高検察庁\法務省\石川県警察御中
弁護士と裁判官が共同で確定させた傷害・準強姦被告事件判決の再捜査要請に係る石川県警察珠洲警察署提出書面の情報公開

殺人未遂事件幇助の被告訴人: 木梨松嗣弁護士(金沢弁護士会)、岡田進弁護士(金沢弁護士会)、長谷川紘之弁護士(金沢弁護士会)、若杉幸平弁護士(金沢弁護士会)
名誉毀損罪の被告訴人: モトケンこと矢部善朗弁護士(京都弁護士会)、小倉秀夫弁護士(東京弁護士会)
市場急配センター株式会社 石川県金沢市駅西本町5丁目10番20所在
作成管理者: 石川県鳳珠郡能登町字宇出津 廣野秀樹
金沢地方検察庁御中

2020年10月9日金曜日

* PowerShellで,正規表現を使いマッチしたファイルをディレクトリーの階層ごと指定ディレクトリーにコピー

* PowerShellで,正規表現を使いマッチしたファイルをディレクトリーの階層ごと指定ディレクトリーにコピー

:CATEGORIES: PowerShell,正規表現

```
cls
$source = "C:\test"
$destination = "C:\test2"
$filter = [regex] "^[0-9]{6}\.(jpg|gif)"

$bin = Get-ChildItem -Path $source -Recurse | Where-Object {($_.Name -match $filter) -or ($_.PSIsContainer)}
foreach ($item in $bin) {
Write-Host "
----
Obj: $item
Path: "$item.fullname"
Destination: "$item.FullName.ToString().Replace($source,$destination).Replace($item.Name,"")
Copy-Item -Path $item.FullName -Destination $item.FullName.ToString().Replace($source,$destination).Replace($item.Name,"")
}

[source:] windows — Windows:ファイル名の正規表現を使用したファイルのコピー/移動? https://www.it-swarm-ja.tech/ja/windows/windows%EF%BC%9A%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E5%90%8D%E3%81%AE%E6%AD%A3%E8%A6%8F%E8%A1%A8%E7%8F%BE%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%97%E3%81%9F%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%81%AE%E3%82%B3%E3%83%94%E3%83%BC%E7%A7%BB%E5%8B%95%EF%BC%9F/959356621/
```

 コピー元とコピー先のディレクトリーを変更して,Linux(Ubuntu)のPowerShell Coreで実行。

```
PS /kk/pwork/tv> $bin = Get-ChildItem -Path $source -Recurse | Where-Object {($_.Name -match $filter) -or ($_.PSIsContainer)}
PS /kk/pwork/tv> foreach ($item in $bin) {
>> Write-Host "
>> ----

>> Obj: $item
>> Path: "$item.fullname"
>> Destination: "$item.FullName.ToString().Replace($source,$destination).Replace($item.Name,"")
>> Copy-Item -Path $item.FullName -Destination $item.FullName.ToString().Replace($source,$destination).Replace($item.Name,"")

>> }

----
Obj: /kk/pwork/tv/2020-09-09_190059_テレビの画面・.jpg
Path: /kk/pwork/tv/2020-09-09_190059_テレビの画面・.jpg
Destination: /home/a66/w3/
(以下略)
```

 書式を少し変更して実行。

```
PS /kk/pwork/tv> $filter = [regex] "^[0-9]{4}-09-09_1936.+\.(jpg|gif)"
PS /kk/pwork/tv> $bin = Get-ChildItem -Path $source -Recurse | Where-Object {($_.Name -match $filter) -or ($_.PSIsContainer)}
PS /kk/pwork/tv> foreach ($item in $bin) {
>> Write-Host "
>> ----

>> Obj: $item
>> Path: "$item.fullname"
>> Destination: "

>> $item.FullName.ToString().Replace($source,$destination).Replace($item.Name,"")
>> Copy-Item -Path $item.FullName -Destination $item.FullName.ToString().Replace($source,$destination).Replace($item.Name,"")

>> }

----
Obj: /kk/pwork/tv/2020-09-09_193623_テレビの画面・.jpg
Path: /kk/pwork/tv/2020-09-09_193623_テレビの画面・.jpg
Destination:
/home/a66/w3/

----
Obj: /kk/pwork/tv/2020-09-09_193644_テレビの画面・.jpg
Path: /kk/pwork/tv/2020-09-09_193644_テレビの画面・.jpg
Destination:
/home/a66/w3/

----
Obj: /kk/pwork/tv/2020-09-09_193652_テレビの画面・.jpg
Path: /kk/pwork/tv/2020-09-09_193652_テレビの画面・.jpg
Destination:
/home/a66/w3/
PS /kk/pwork/tv>
```

 「-or ($_.PSIsContainer)」という部分が条件式でのディレクトリー(フォルダ)の指定と思われますが,パスをテキストとしてファイル名を除いて使っているようです。

 やってみると,ページの末尾にある方法を参考に,Linux環境ですが,次の方法でも同じことが出来ました。

dir|?{$_ -match '2020-09-10.*\.(jpg|png)'}|%{cp $_.fullname /home/a66/tmp}

0 件のコメント:

コメントを投稿