Quel est l'équivalent du système Unix trouver sous Windows ?
Je vois que le find.exe
sous Windows ressemble davantage à un grep
. Je suis particulièrement intéressé par l'équivalent de
find . -name [filename]
Quel est l'équivalent du système Unix trouver sous Windows ?
Je vois que le find.exe
sous Windows ressemble davantage à un grep
. Je suis particulièrement intéressé par l'équivalent de
find . -name [filename]
En Find-ChildItem
La cmdlet dans Windows Powershell est un équivalent de la commande find d'Unix/Linux.
http://Windows-powershell-scripts.blogspot.in/2009/08/unix-linux-find-equivalent-in.html
Quelques options de Find-ChildItem
Find-ChildItem -Type f -Name ".*.exe"
Find-ChildItem -Type f -Name "\.c$" -Exec "Get-Content {} | Measure-Object -Line -Character -Word"
Find-ChildItem -Type f -Empty
Find-ChildItem -Type f -Empty -OutObject
Find-ChildItem -Type f -Empty -Delete
Find-ChildItem -Type f -Size +9M -Delete
Find-ChildItem -Type d
Find-ChildItem -Type f -Size +50m -WTime +5 -MaxDepth 1 -Delete
Divulgation : je suis le développeur de Find-ChildItem
cmdlet
Si vous utilisez la fonction find d'Unix pour chercher des fichiers dans une hiérarchie de répertoires, alors la méthode Powershell consiste à utiliser Get-ChildItem
(l'alias est gci
) et filtrez les résultats avec la commande Where-Object
(l'alias est where
) cmdlet.
Par exemple, pour trouver tous les fichiers (à partir de C:\Users\
et de façon récursive) avec le mot "essentiel" dans son nom, utilisez ce qui suit :
PS> gci -Path "C:\Users\" -Recurse | where {$_.Name -like '*essential*'}
En -like
vous permet d'utiliser des caractères génériques pour la correspondance des motifs.
Celui-ci n'est pas exactement GNU find, mais correspond plus étroitement à la philosophie de la ligne de commande linux sous powershell :
PS> dir -recurse -ea 0 | % FullName | sls <grep_string>
Exemple :
PS> cd C:\
PS> dir -recurse -ea 0 | % FullName | sls "Program" | sls "Microsoft"
PS> dir -recurse -ea 0 | % FullName | sls "Program" | sls "Microsoft" | out-gridview
Note : Tout ce qui est renvoyé après "| % FullName" est une chaîne de caractères, au lieu d'un objet.
Vous pouvez également utiliser l'opérateur Where, " ?", mais cela demande plus de travail et n'est pas beaucoup plus rapide :
PS> cd C:\
PS> dir -Recurse -ea 0 | ? FullName -like "*Program*"
| ? FullName -like "*Microsoft*"
| % FullName
| out-gridview
Voici un raccourci rapide :
PS> function myfind {dir -recurse -ea 0 | % FullName | sls $args }
PS> cd C:\
PS> myfind "Programs" | sls "Microsoft"
#find all text files recursively from current directory
PS> myfind "\.txt$"
#find all files recursively from current directory
PS> myfind .
SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.