Powershell 및 정규식: Notepad++ "저장 시 백업" 파일 목록입니다. 이름 편집, 마지막 쓰기 시간순으로 정렬

Powershell 및 정규식: Notepad++ "저장 시 백업" 파일 목록입니다. 이름 편집, 마지막 쓰기 시간순으로 정렬
# Microsoft Windows [Version 10.0.17134.648] 
# powershell 5.1.17134.48
# Calculate time to complete task using Notepad++ "backup on save" feature.  Create a copy and paste table of files sorted by LastWriteTime.    
# Can be used as a shortcut: powershell -noexit $time = (Get-Date).AddDays(-1); gci * -exclude _*, 1* | where {$_.LastWriteTime -gt $time}| sort -property LastWriteTime -descending | Format-Table LastWriteTime, length, @{n='foo';e={$_.Name -replace '(?<=^.*\.html).*$' -replace '(?<=^.*\.jpg).*$'}} -HideTableHeaders
# start it in %userprofile%\Documents\NOTEPAD++ AUTOBACKUP
Set-Location -Path "$env:userprofile\Documents\NOTEPAD++ AUTOBACKUP"
# how old a file? Today? 4 days old?
$time = (Get-Date).AddDays(-1)
# $time = (Get-Date).AddDays(-4)
# do you want to exclude files with -exclude? Do you want to include with -include?
gci * -exclude _*, 1* | where {$_.LastWriteTime -gt $time}| sort -property LastWriteTime -descending | Format-Table LastWriteTime, length, @{n='foo';e={$_.Name -replace '(?<=^.*\.html).*$' -replace '(?<=^.*\.jpg).*$'}} -HideTableHeaders
gci * -exclude _*, 1* | where {$_.LastWriteTime -gt $time} | sort -property LastWriteTime -descending | Format-Table LastWriteTime, length, Name -HideTableHeaders
# gci * | where {$_.LastWriteTime -gt $time} | sort -property LastWriteTime -descending | Format-Table LastWriteTime, length, @{n='foo';e={$_.Name -replace '(?<=^.*\.html).*$' -replace '(?<=^.*\.jpg).*$'}} -HideTableHeaders
# gci * -include [0-9][0-9][0-9]*, avail* | where {$_.LastWriteTime -gt $time} | sort -property LastWriteTime -descending | Format-Table LastWriteTime, length, @{n='foo';e={$_.Name -replace '(?<=^.*\.html).*$' -replace '(?<=^.*\.jpg).*$'}} -HideTableHeaders

출력:

5/4/2019 10  :  47  :  27 AM  114036 springhill_falls2bd750_885.jpg
5/4/2019 10  :  45  :  25 AM 1301974 springhill_falls2bd750_885.psp
5/4/2019 10  :  37  :  08 AM   19268 springhill_falls2bd13.html
5/4/2019 10  :  37  :  08 AM   94007 available13.html
5/4/2019 10  :  37  :  08 AM   36729 index.html
5/4/2019 10  :  32  :  16 AM   62801 aj.php

그리고:

5/4/2019 10  :  47  :  27 AM  114036 springhill_falls2bd750_885.jpg.2019-05-04_104748.bak
5/4/2019 10  :  45  :  25 AM 1301974 springhill_falls2bd750_885.psp.2019-05-04_105221.bak
5/4/2019 10  :  37  :  08 AM   19268 springhill_falls2bd13.html.2019-05-04_105856.bak
5/4/2019 10  :  37  :  08 AM   94007 available13.html.2019-05-04_105657.bak
5/4/2019 10  :  37  :  08 AM   36729 index.html.2019-05-04_105657.bak
5/4/2019 10  :  32  :  16 AM   62801 aj.php.2019-05-04_103229.bak

Microsoft Windows [버전 10.0.17134.648]
powershell 5.1.17134.48

Notepad++ / NPP / Notepad Plus "저장 시 백업" 기능을 사용하여 작업 완료 시간을 계산하세요.

LastWriteTime으로 정렬된 파일의 복사 및 붙여넣기 테이블을 만듭니다.

바로 가기로 사용할 수 있습니다.

powershell -noexit $time = (Get-Date).AddDays(-1); gci * -exclude _*, 1* |
    where {$_.LastWriteTime -gt $time} | sort -property LastWriteTime -descending |
    Format-Table LastWriteTime, length, @{n='foo';e={$_.Name
    -replace '(?<=^.*\.html).*$' -replace '(?<=^.*\.jpg).*$'}} -HideTableHeaders

NPP 자동 백업이 있는 디렉터리에서 시작하세요. 내 파일은 다음에 백업됩니다.%userprofile%\Documents\NOTEPAD++ AUTOBACKUP

이 스크립트는 편집된 파일 이름, 크기, 날짜 및 파일이 기록될 때마다 시간이 포함된 형식화된 테이블 출력을 생성합니다. 검색할 파일, 파일 이름 편집 방법, 검색하려는 파일의 일수를 쉽게 수정할 수 있습니다. 파일 작업 시간, 작업 완료 시간, 프로젝트 완료 시간을 추적하는 편리한 방법입니다.

정규식에 대한 자세한 내용은 아래 LotPings 답변을 참조하세요.

답변1

나는 RegEx를 사용하겠습니다.길이가 0인 LookBehind 주장html 이후 의 모든 항목을 제거하려면$_.Name

이는 계산된 속성을 사용하여 Select-Object또는 다음에서 수행할 수 있습니다.Format-*

Get-ChildItem -File | 
  Format-Table @{n='foo';e={$_.Name -replace '(?<=^.*\.html).*$'}},Name -HideTableHeaders

샘플 출력:

available13.html available13.html.2019-03-26_081523.bak
index.html       index.html.2019-03-26_081538.bak

답변2

다음을 사용하여 새 속성을 추가할 수 있습니다.Add-Member이와 같이

$time = (Get-Date).AddDays(-4)
$files = gci * -include index*,avail* | where {$_.LastWriteTime -gt $time}
foreach ($f in $files) {
    $f | Add-Member noteproperty newName -Value `
             $f.Name.Substring(0, $f.Name.Length - ".yyyy-mm-dd_iiiiii.bak".Length)
}
$files | Format-Table -HideTableHeaders newName,Length,LastWriteTime

위의 코드 조각에서는 이름이 항상 로 끝난다고 가정합니다 .yyyy-mm-dd_iiiiii.bak. 다른 형식이 있는 경우 질문에 해당 정보를 포함해야 하며 불필요한 부분을 제거하려면 교체, 하위 문자열...과 같은 다른 문자열 방법을 사용해야 할 수도 있습니다.

관련 정보