@DevSolar pouvez-vous revérifier votre commande? Je l'ai testé sur Windows 5.1 Build 2600 SP3, et votre commande me donne juste la liste des fichiers dans le répertoire c:
JohannesM
1
Euh ... désolé. Me sert bien de taper de mémoire. dir /s C:\example.txtc'est.
DevSolar
1
pour les résultats les plus similaires que j'utilise \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>
Hashbrown
28
L' Find-ChildItemapplet de commande dans Windows Powershell est un équivalent de la commande find Unix / Linux
Merci. C'est certainement plus à l'esprit de ce que je chercherais à répondre à cette question.
supercheetah
7
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.
walen
19
Sans applets de commande supplémentaires installées, vous pouvez simplement utiliser Get-ChildItem:
Dans ce cas, vous souhaiterez probablement utiliser l'un des alias courts dir, lsou gci, sauf si vous écrivez un script.
Swonkie
5
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.
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 .
Trouver -exec grep {} d'UnixUtils ne fonctionne pas correctement, il ne semble "pas un tel fichier ou répertoire". Cette solution: PowerShell.exe -Commande "dir -Recurse -ea 0 |? FullName -like '* .log' | sls error", à partir d'un script de batch fonctionne. Remarque: doit utiliser des guillemets simples à l'intérieur, des guillemets doubles à l'extérieur.
Réponses:
- alternative -
Exemple
- alternative -
la source
dir c: /s example.txt
fonctionne aussi.dir /s C:\example.txt
c'est.\b
pour les brèves (sortie uniquement les chemins);find <folder> -name <pattern>
->dir /s /b <folder><pattern>
. Par exemplefind /tmp -name *.txt
->dir \s \b C:\temp\*.txt
. Cependant,dir
renvoie toujours une liste de chemins absolus, tandis quefind
toujours donne les chemins préfixés par<folder>
L'
Find-ChildItem
applet de commande dans Windows Powershell est un équivalent de la commande find Unix / Linuxhttp://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 -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
cmdletla source
Find-ChildItem
n'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 UNIXfind
.Sans applets de commande supplémentaires installées, vous pouvez simplement utiliser
Get-ChildItem
:la source
dir
,ls
ougci
, 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 estgci
) et à filtrer les résultats avec l' applet de commandeWhere-Object
(alias estwhere
).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:L'
-like
option vous permet d'utiliser des caractères génériques pour la correspondance des modèles.la source
Celui-ci n'est pas exactement une trouvaille GNU, mais correspond plus étroitement à la philisophie de ligne de commande Linux sous PowerShell:
Exemple:
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:
Voici un raccourci rapide:
la source