web-dev-qa-db-fra.com

Équivalent de la commande de recherche Unix sous Windows

Quel est l'équivalent de la commande Unix find sous Windows?

Je vois que le find.exe sous Windows ressemble davantage à une grep. Je suis particulièrement intéressé par l'équivalent de

find . -name [filename]
31
ARV
dir <drive: [drive:]> /s | findstr /i <pattern>

- alternative -

dir /s <drive:>\<pattern>

exemple

dir c: d: /s | findstr /i example.txt

- alternative -

dir /s c:\example.txt
21
JohannesM

La cmdlet Find-ChildItem dans Windows Powershell est équivalente à la commande de recherche Unix/Linux.

http://windows-powershell-scripts.blogspot.fr//08/unix-linux-find-equivalent-in.html

Certaines des options Find-ChildItem

  1. Find-ChildItem -Type f -Name ".*.exe"
  2. Find-ChildItem -Type f -Name "\.c$" -Exec "Get-Content {} | Measure-Object -Line -Character -Word"
  3. Find-ChildItem -Type f -Empty
  4. Find-ChildItem -Type f -Empty -OutObject
  5. Find-ChildItem -Type f -Empty -Delete
  6. Find-ChildItem -Type f -Size +9M -Delete
  7. Find-ChildItem -Type d
  8. Find-ChildItem -Type f -Size +50m -WTime +5 -MaxDepth 1 -Delete

Divulgation: Je suis le développeur de la cmdlet Find-ChildItem

27
Jagadish G

En l'absence d'applets de commande supplémentaires installés, vous pouvez simplement utiliser Get-ChildItem:

Get-ChildItem -Filter *.Zip -Recurse $pwd
16
djhaskin987

Si vous utilisez la recherche d'Unix pour rechercher des fichiers dans une hiérarchie de répertoires, la méthode Powershell consiste à utiliser la cmdlet Get-ChildItem (l'alias est gci) et à filtrer les résultats à l'aide de la cmdlet Where-Object (l'alias est where).

Par exemple, pour rechercher tous les fichiers (à partir de C:\Users\ et de manière récursive) avec le mot "essential" dans son nom, utilisez ce qui suit:

PS> gci -Path "C:\Users\"  -Recurse | where {$_.Name -like '*essential*'}

L'option -like vous permet d'utiliser des caractères génériques pour la correspondance de modèle.

4
Joshua Kan

Celui-ci n'est pas exactement GNU find, mais correspond plus fidèlement à la philisophie en 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

Remarque: Tout ce qui est retourné après "|% FullName" est une chaîne et non un objet.

Vous pouvez également utiliser l’opérateur Where, "?", Cependant, cela demande plus de travail et pas beaucoup plus rapidement:

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 .
1
Bill Moore