Was entspricht dem Unix- Befehl find unter Windows?
Ich sehe, dass das find.exeunter Windows eher wie ein grep. Mich interessiert vor allem das Äquivalent von
find . -name [filename]
Was entspricht dem Unix- Befehl find unter Windows?
Ich sehe, dass das find.exeunter Windows eher wie ein grep. Mich interessiert vor allem das Äquivalent von
find . -name [filename]
Antworten:
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.txtfunktioniert auch.
dir /s C:\example.txtes ist.
\bkurz (nur Pfade ausgeben); find <folder> -name <pattern>-> dir /s /b <folder><pattern>. ZB find /tmp -name *.txt-> dir \s \b C:\temp\*.txt. Es wird jedoch dirimmer eine Liste absoluter Pfade zurückgegeben, wohingegen findPfade mit dem Präfix "<folder>
Das Find-ChildItemCmdlet in Windows PowerShell entspricht dem Befehl find unter Unix / Linux
http://windows-powershell-scripts.blogspot.in/2009/08/unix-linux-find-equivalent-in.html
Einige der Find-ChildItem-Optionen
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 -DeleteOffenlegung: Ich bin der Entwickler von Find-ChildItemCmdlet
Find-ChildItemist kein offizielles Cmdlet und nicht in PowerShell enthalten. Sie müssen dieses Cmdlet von OneDrive eines Typen herunterladen . Es gibt keinen Unterschied zwischen dem Herunterladen von Bash, Cygwin, Unixutils oder einem anderen Programm, mit dem Sie nur UNIX ausführen können find.
Ohne zusätzliche installierte Cmdlets können Sie einfach Folgendes verwenden Get-ChildItem:
Get-ChildItem -Filter *.zip -Recurse $pwd
dir, lsoder gci, wenn Sie ein Skript schreiben.
Wenn Sie mit der Unix-Suche nach Dateien in einer Verzeichnishierarchie suchen, können Sie das Cmdlet Get-ChildItem(alias is gci) in Powershell verwenden und die Ergebnisse mit dem Cmdlet Where-Object(alias is where) filtern.
C:\Users\Verwenden Sie beispielsweise Folgendes , um alle Dateien (beginnend mit und rekursiv) mit dem Wort "essential" im Namen zu suchen :
PS> gci -Path "C:\Users\" -Recurse | where {$_.Name -like '*essential*'}
Mit dieser -likeOption können Sie Platzhalter für den Mustervergleich verwenden.
Dies ist keine GNU-Entdeckung, sondern entspricht eher der Linux-Kommandozeilenphilosophie unter Powershell:
PS> dir -recurse -ea 0 | % FullName | sls <grep_string>
Beispiel:
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
Hinweis: Alles, was nach "|% FullName" zurückgegeben wird, ist eine Zeichenfolge anstelle eines Objekts.
Sie können auch den Where-Operator "?" Verwenden. Dies ist jedoch arbeitsintensiver und nicht viel schneller:
PS> cd C:\
PS> dir -Recurse -ea 0 | ? FullName -like "*Program*"
| ? FullName -like "*Microsoft*"
| % FullName
| out-gridview
Hier ist eine kurze Verknüpfung:
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 .