web-dev-qa-db-fra.com

Comment obtenir N fichiers dans un ordre de répertoire par date de dernière modification?

Je veux rechercher un ou quelques fichiers avec la dernière date de modification dans un grand répertoire. Essayer du code PowerShell mais cela ne fonctionne pas bien pour moi.

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

Je sais que je peux utiliser -Recurse pour rechercher dans tous les répertoires. Mais comment:

  • Limitez uniquement certains fichiers

  • Ordre en mode descendant

  • Ne pas répertorier le répertoire

Merci de votre aide!

15
fred
  • Limitez seulement quelques fichiers => pipe à Select-Object -first 10
  • Ordre en mode descendant => tuyau vers Sort-Object LastWriteTime -Descending
  • Ne pas répertorier le répertoire => diriger vers Where-Object { -not $_.PsIsContainer }

Donc, pour les combiner ensemble, voici un exemple qui lit tous les fichiers de D:\Temp, triez-les par LastWriteTime décroissant et sélectionnez uniquement les 10 premiers:

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

Cela fonctionne pour moi:

PS> dir | Sort-Object LastAccessTime 

C'est presque la même chose que la commande bash:

$ ls -ltr

Pour filtrer les répertoires:

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

(Personnellement, je pense que Microsoft devrait fusionner "out-string -stream" et "sls" pour créer une nouvelle commande appelée "out-grep", afin que powershell fonctionne plus normalement pour les utilisateurs bash sans se soucier de personnaliser votre Shell. Qui veut pour taper toutes ces ordures juste pour grep une sortie de commande?)

La commande bash serait:

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