Quel est l'équivalent de la commande Unix find sous Windows?
Je vois que find.exesur Windows ressemble plus à un grep. Je suis particulièrement intéressé par l'équivalent de
find . -name [filename]
Quel est l'équivalent de la commande Unix find sous Windows?
Je vois que find.exesur Windows ressemble plus à un grep. Je suis particulièrement intéressé par l'équivalent de
find . -name [filename]
Réponses:
dir <drive: [drive:]> /s | findstr /i <pattern>
- alternative -
dir /s <drive:>\<pattern>
dir c: d: /s | findstr /i example.txt
- alternative -
dir /s c:\example.txt
dir c: /s example.txtfonctionne aussi.
dir /s C:\example.txtc'est.
\bpour les brèves (sortie uniquement les chemins); find <folder> -name <pattern>-> dir /s /b <folder><pattern>. Par exemple find /tmp -name *.txt-> dir \s \b C:\temp\*.txt. Cependant, dirrenvoie toujours une liste de chemins absolus, tandis que findtoujours donne les chemins préfixés par<folder>
L' Find-ChildItemapplet de commande dans Windows Powershell est un équivalent de la commande find Unix / Linux
http://windows-powershell-scripts.blogspot.in/2009/08/unix-linux-find-equivalent-in.html
Certaines des options 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 -EmptyFind-ChildItem -Type f -Empty -OutObjectFind-ChildItem -Type f -Empty -DeleteFind-ChildItem -Type f -Size +9M -DeleteFind-ChildItem -Type dFind-ChildItem -Type f -Size +50m -WTime +5 -MaxDepth 1 -DeleteDivulgation: je suis le développeur de Find-ChildItemcmdlet
Find-ChildItemn'est pas une applet de commande officielle et n'est pas incluse dans PowerShell; vous devez télécharger cette applet de commande à partir du lecteur OneDrive d'un gars . Il n'y a aucune différence entre cela et le téléchargement de bash, cygwin, unixutils ou tout autre programme qui vous permet simplement d'exécuter UNIX find.
Sans applets de commande supplémentaires installées, vous pouvez simplement utiliser Get-ChildItem:
Get-ChildItem -Filter *.zip -Recurse $pwd
dir, lsou gci, sauf si vous écrivez un script.
Si vous utilisez la recherche d'Unix pour rechercher des fichiers dans une hiérarchie de répertoires, la méthode Powershell consiste à utiliser l' applet de commande Get-ChildItem(alias est gci) et à filtrer les résultats avec l' applet de commande Where-Object(alias est where).
Par exemple, pour rechercher tous les fichiers (à partir de C:\Users\et récursivement) avec le mot «essentiel» dans son nom, utilisez ce qui suit:
PS> gci -Path "C:\Users\" -Recurse | where {$_.Name -like '*essential*'}
L' -likeoption vous permet d'utiliser des caractères génériques pour la correspondance des modèles.
Celui-ci n'est pas exactement une trouvaille GNU, mais correspond plus étroitement à la philisophie de 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, au lieu d'un objet.
Vous pouvez également utiliser l'opérateur Where, "?", Cependant, c'est 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 .