Stimmt etwas mit meiner Antwort nicht? Kann ich es verbessern? Benötigen Sie noch Hilfe?
JohannesM
Entschuldigung, ich hatte diesen Thread vor einiger Zeit aus den Augen verloren. Vielen Dank für Ihre Antwort und entschuldigen Sie, dass Sie sie nicht früher akzeptiert haben.
@ DevSolar können Sie Ihren Befehl erneut überprüfen? Ich habe es unter Windows 5.1 Build 2600 SP3 getestet, und Ihr Befehl gibt mir nur die Liste der Dateien im Verzeichnis c:
JohannesM
1
Äh ... Entschuldigung. Dient mir richtig aus dem Gedächtnis zu tippen. dir /s C:\example.txtes ist.
DevSolar
1
für die ähnlichsten Ergebnisse verwende ich \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>
Hashbrown
28
Das Find-ChildItemCmdlet in Windows PowerShell entspricht dem Befehl find unter Unix / Linux
Vielen Dank. Dies ist definitiv mehr im Sinne dessen, wonach ich bei der Beantwortung dieser Frage suchen würde.
Supercheetah
7
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.
Walen
19
Ohne zusätzliche installierte Cmdlets können Sie einfach Folgendes verwenden Get-ChildItem:
In diesem Fall möchten Sie wahrscheinlich eine der kurzen Aliasnamen verwenden dir, lsoder gci, wenn Sie ein Skript schreiben.
Swonkie
5
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.
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 .
Find -exec grep {} von UnixUtils funktioniert nicht richtig, es scheint "keine solche Datei oder kein solches Verzeichnis". Diese Lösung: PowerShell.exe -Befehl "dir -Recurse -ea 0 |? FullName -wie '* .log' | sls error", aus einem Batch-Skript funktioniert. Hinweis: Es müssen einfache Anführungszeichen verwendet werden, doppelte Anführungszeichen außerhalb.
Antworten:
- alternative -
Beispiel
- alternative -
quelle
dir c: /s example.txt
funktioniert auch.dir /s C:\example.txt
es ist.\b
kurz (nur Pfade ausgeben);find <folder> -name <pattern>
->dir /s /b <folder><pattern>
. ZBfind /tmp -name *.txt
->dir \s \b C:\temp\*.txt
. Es wird jedochdir
immer eine Liste absoluter Pfade zurückgegeben, wohingegenfind
Pfade mit dem Präfix "<folder>
Das
Find-ChildItem
Cmdlet in Windows PowerShell entspricht dem Befehl find unter Unix / Linuxhttp://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 -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
Offenlegung: Ich bin der Entwickler von
Find-ChildItem
Cmdletquelle
Find-ChildItem
ist 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önnenfind
.Ohne zusätzliche installierte Cmdlets können Sie einfach Folgendes verwenden
Get-ChildItem
:quelle
dir
,ls
odergci
, 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 isgci
) in Powershell verwenden und die Ergebnisse mit dem CmdletWhere-Object
(alias iswhere
) filtern.C:\Users\
Verwenden Sie beispielsweise Folgendes , um alle Dateien (beginnend mit und rekursiv) mit dem Wort "essential" im Namen zu suchen :Mit dieser
-like
Option können Sie Platzhalter für den Mustervergleich verwenden.quelle
Dies ist keine GNU-Entdeckung, sondern entspricht eher der Linux-Kommandozeilenphilosophie unter Powershell:
Beispiel:
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:
Hier ist eine kurze Verknüpfung:
quelle