programing

마지막으로 수정된 날짜까지 N개의 파일을 디렉토리 순서로 가져오는 방법은 무엇입니까?

iphone6s 2023. 8. 5. 09:59
반응형

마지막으로 수정된 날짜까지 N개의 파일을 디렉토리 순서로 가져오는 방법은 무엇입니까?

큰 디렉터리에서 가장 최근에 수정된 날짜가 있는 파일을 하나 또는 몇 개 검색하고 싶습니다.PowerShell 코드를 시도해 보았지만 잘 작동하지 않습니다.

Get-ChildItem 'D:\Temp' | Sort-Object LastWriteTime

나는 내가 사용할 수 있다는 것을 알고 있습니다.-Recurse모든 디렉토리에서 검색합니다.하지만 방법:

  • 일부 파일만 제한

  • 내림차순 모드에서 주문

  • 디렉터리 나열 안 함

도와주셔서 감사합니다!

  • 일부 파일만 제한 => 파이프:Select-Object -first 10
  • 내림차순 모드에서 주문 => 파이프:Sort-Object LastWriteTime -Descending
  • 디렉터리 => 파이프를 나열하지 않음Where-Object { -not $_.PsIsContainer }

이들을 함께 결합하기 위해, 여기에서 모든 파일을 읽는 예제가 있습니다.D:\Temp그것들을 에 따라 분류합니다.LastWriteTime내림차순으로 선택하고 처음 10개만 선택합니다.

Get-ChildItem -Force -Recurse -File -Path "C:\Users" -ErrorAction SilentlyContinue | Where-Object { $_.CreationTime.Date -lt (Get-Date).Date } | Sort CreationTime -Descending | Select-Object -First 10 CreationTime,FullName | Format-Table -Wrap 

이것은 나에게 도움이 됩니다.

PS> dir | Sort-Object LastAccessTime 

bash 명령어와 거의 같습니다.

$ ls -ltr

디렉터리 필터링하기:

PS> dir | Sort-Object LastAccessTime | Out-String -Stream | Select-String -NotMatch "^d"

(개인적으로, 저는 마이크로소프트가 "out-string-stream"과 "sls"를 병합하여 "out-grep"라는 새로운 명령을 만들어야 한다고 생각합니다. 그래야 파워셸이 bash 사용자들에게 더 정상적으로 작동하고 셸을 사용자 지정하는 데 방해가 되지 않습니다.명령 출력을 grep하기 위해 그 모든 정크를 입력하고 싶은 사람이 있습니까?

bash 명령은 다음과 같습니다.

$ ls -ltr | egrep -v "^d"

내가 이 글을 쓸 수 있는 가장 짧고 달콤한 방법은

ls | sort LastAccessTime -Descending

이것들은 단지 이것에 대한 가명일 뿐입니다.

Get-ChildItem | Sort-Object LastAccessTime -Descending

마틴 브랜들의 답변은 이유를 포함하므로 반복하지 않겠습니다. 새로운 파워셸 버전에서는 사용할 수 있습니다.Get-ChildItem -File파일만 나열하고 디렉터리(폴더)는 나열하지 않습니다.언제 소개되었는지는 모르겠지만 파워셸 5.1에 있습니다.

다음은 조합의 몇 가지 예입니다.Sort-Object그리고.Select-Object제한하고 분류하기 위해

디렉토리가 아닌 최근 액세스한 파일 5개를 현재 디렉토리에 내림차순으로 나열합니다.

Get-ChildItem -File | Sort-Object -Property LastAccessTime -Descending | Select-Object -First 5

가장 최근에 액세스한 5개의 파일, 현재 디렉토리, 오름차순

Get-ChildItem -File | Sort-Object -Property LastAccessTime | Select-Object -Last 5

가장 오래된 액세스 파일 5개, 현재 디렉토리, 내림차순 나열

Get-ChildItem -File | Sort-Object -Property LastAccessTime -Descending | Select-Object -Last 5

가장 오래된 액세스 파일 5개, 현재 디렉토리, 오름차순 나열

Get-ChildItem -File | Sort-Object -Property LastAccessTime | Select-Object -First 5

또한 정렬할 수 있는 몇 가지 datetime 파일 속성이 있습니다.모든 파일을 가져오려면 다음과 같이 하십시오.

Get-ChildItem | Get-Member -MemberType Property | Where-Object -Property Definition -Like "datetime*"

   TypeName: System.IO.FileInfo

Name              MemberType Definition                           
----              ---------- ----------                           
CreationTime      Property   datetime CreationTime {get;set;}     
CreationTimeUtc   Property   datetime CreationTimeUtc {get;set;}  
LastAccessTime    Property   datetime LastAccessTime {get;set;}   
LastAccessTimeUtc Property   datetime LastAccessTimeUtc {get;set;}
LastWriteTime     Property   datetime LastWriteTime {get;set;}    
LastWriteTimeUtc  Property   datetime LastWriteTimeUtc {get;set;} 

언급URL : https://stackoverflow.com/questions/40904836/how-to-get-n-files-in-a-directory-order-by-last-modified-date

반응형