programing

PowerShell 스크립트를 사용하여 디렉토리에서 최신 파일을 찾는 방법은 무엇입니까?

bestprogram 2023. 7. 26. 22:17

PowerShell 스크립트를 사용하여 디렉토리에서 최신 파일을 찾는 방법은 무엇입니까?

예를 들어 다음 파일이 포함된 디렉토리가 있는 경우:

Test-20120626-1023.txt
Test-20120626-0710.txt
Test-20120626-2202.txt
Test-20120626-1915.txt
Test-20120626-1142.txt

보시다시피 각 파일 이름에는 정렬 가능한 형식의 작성 시간이 포함되어 있습니다.

최신 파일 이름을 찾는 방법(이 경우)Test-20120626-2202.txt) 변수에 저장하시겠습니까?

참고: 디렉터리 경로도 변수에 저장됩니다.

다음과 같은 방법을 사용할 수 있습니다.

$dir = "C:\test_code"
$latest = Get-ChildItem -Path $dir | Sort-Object LastAccessTime -Descending | Select-Object -First 1
$latest.name

이름이 파일 속성의 동일한 작성 시간인 경우CreationTime다음을 쉽게 사용할 수 있습니다.

$a = Dir | Sort CreationTime -Descending | Select Name -First 1

그리고나서

$a.name

이름 파일이 들어 있습니다.

이름의 형식이 항상 동일한 경우(예: 20120102-0001)에도 다음과 같이 작동합니다.

$a = Dir | Sort Name -Descending | Select Name -First 1

만약 당신이 많은 파일들을 가지고 작업하고 싶은 것은-Filter실행 시간이 크게 줄어들기 때문에 매개 변수가 필요로 합니다.

James가 제공한 예를 바탕으로 다음과 같이 사용할 수 있습니다.

$dir = "C:\test_code"
$filter="*.txt"
$latest = Get-ChildItem -Path $dir -Filter $filter | Sort-Object LastAccessTime -Descending | Select-Object -First 1
$latest.name

어떤 이유로 파일 생성 날짜가 파일 이름에 스탬프로 표시된 날짜와 다른 경우 파일 이름을 datetime 개체로 구문 분석하고 식을 기준으로 정렬할 수 있습니다.

$file = Get-ChildItem | 
Sort-Object { [DateTime]::ParseExact($_.BaseName,'\Te\s\t\-yyyyMMdd\-HHmm',$null) } |
Select-Object -Last 1

마지막으로 업데이트된 파일을 가져오는 데 사용합니다.쓰기 쉽습니다.

ls | sort LastWriteTime

언급URL : https://stackoverflow.com/questions/11210649/how-do-i-find-the-newest-file-in-a-directory-using-a-powershell-script