web-dev-qa-db-ja.com

最終変更日までにディレクトリ順にN個のファイルを取得する方法は?

大きなディレクトリで最新の更新日を持つ1つまたはいくつかのファイルを検索したい。 PowerShellコードを試してみましたが、うまくいきません。

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

-Recurseを使用してすべてのディレクトリを検索できることを知っています。しかし、どのように:

  • 一部のファイルのみを制限する

  • 降順モードで注文する

  • ディレクトリをリストしない

ご協力いただきありがとうございます!

15
fred
  • 一部のファイルのみを制限=>パイプをSelect-Object -first 10
  • 降順モードでの順序=> Sort-Object LastWriteTime -Descendingへのパイプ
  • ディレクトリをリストしない=> Where-Object { -not $_.PsIsContainer }へのパイプ

これらを一緒に結合するために、ここではD:\Tempからすべてのファイルを読み取り、LastWriteTime降順でソートし、最初の10個のみを選択する例を示します。

Get-ChildItem -Path 'D:\Temp' | 
    Where-Object { -not $_.PsIsContainer } |
    Sort-Object LastWriteTime -Descending |
    Select-Object -first 10 
27
Martin Brandl

これは私のために働く:

PS> dir | Sort-Object LastAccessTime 

Bashコマンドとほぼ同じです。

$ ls -ltr

ディレクトリをフィルタリングするには:

PS> $mydir = dir | Sort-Object LastAccessTime
PS> $mydir | out-string -Stream | sls "^d" -NotMatch

(個人的には、Microsoftは "out-string -stream"と "sls"をマージして "out-grep"という新しいコマンドを作成する必要があると思います。コマンド出力をgrepするためだけに、すべてのジャンクを入力しますか?)

Bashコマンドは次のようになります。

$ ls -ltr | egrep -v "^d"
4
Bill Moore