@DevSolar czy możesz ponownie sprawdzić swoje polecenie? Przetestowałem to na Windows 5.1 Build 2600 SP3, a twoje polecenie po prostu daje mi listę plików w katalogu c:
JohannesM
1
Uh ... przepraszam. Służy mi do pisania z pamięci. dir /s C:\example.txtto jest.
DevSolar
1
dla najbardziej podobnych wyników używam \bw skrócie (ścieżki wyjściowe tylko); find <folder> -name <pattern>-> dir /s /b <folder><pattern>. Np. find /tmp -name *.txt-> dir \s \b C:\temp\*.txt. dirZawsze jednak zwraca listę ścieżek bezwzględnych, a findzawsze podaje ścieżki z prefiksem<folder>
Hashbrown
28
Polecenie Find-ChildItemcmdlet w programie Windows Powershell jest odpowiednikiem polecenia find w systemie Unix / Linux
Dziękuję Ci. Zdecydowanie bardziej chodzi o to, czego szukałem, odpowiadając na to pytanie.
supercheetah
7
Find-ChildItemnie jest oficjalnym poleceniem cmdlet i nie jest zawarte w PowerShell; musisz pobrać to polecenie cmdlet z OneDrive jakiegoś faceta . Nie ma różnicy między tym a pobieraniem bash, cygwin, unixutils lub jakiegokolwiek innego programu, który pozwala na uruchamianie UNIX-a find.
wal 18.04.18
19
Bez zainstalowanych dodatkowych poleceń cmdlet możesz po prostu użyć Get-ChildItem:
W takim przypadku prawdopodobnie chcesz użyć jednej z krótkich aliasów dir, lslub gci, jeśli nie jesteś napisanie skryptu.
Swonkie
5
Jeśli używasz funkcji wyszukiwania Unixa do wyszukiwania plików w hierarchii katalogów, wówczas sposobem Powershell jest użycie polecenia cmdlet Get-ChildItem(alias to gci) i filtrowanie wyników za pomocą polecenia cmdlet Where-Object(alias to where).
Na przykład, aby znaleźć wszystkie pliki (zaczynające się C:\Users\i rekurencyjnie) ze słowem „niezbędny” w nazwie, użyj następującego polecenia:
PS> gci -Path "C:\Users\" -Recurse | where {$_.Name -like '*essential*'}
Ta -likeopcja pozwala używać symboli wieloznacznych do dopasowywania wzorców.
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 .
Znajdź -exec grep {} z UnixUtils nie działa poprawnie wydaje się, że „nie ma takiego pliku lub katalogu”. To rozwiązanie: PowerShell.exe-Polecenie "katalog -Recurse -ea 0 |? Pełna nazwa-podobny błąd„ * .log "| sls", z poziomu skryptu wsadowego działa. Uwaga: należy stosować pojedyncze cudzysłowy wewnątrz, podwójne cudzysłowy na zewnątrz.
Odpowiedzi:
- alternatywa -
przykład
- alternatywa -
źródło
dir c: /s example.txt
też działa.dir /s C:\example.txt
to jest.\b
w skrócie (ścieżki wyjściowe tylko);find <folder> -name <pattern>
->dir /s /b <folder><pattern>
. Np.find /tmp -name *.txt
->dir \s \b C:\temp\*.txt
.dir
Zawsze jednak zwraca listę ścieżek bezwzględnych, afind
zawsze podaje ścieżki z prefiksem<folder>
Polecenie
Find-ChildItem
cmdlet w programie Windows Powershell jest odpowiednikiem polecenia find w systemie Unix / Linuxhttp://windows-powershell-scripts.blogspot.in/2009/08/unix-linux-find-equivalent-in.html
Niektóre z opcji 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
Ujawnienie: Jestem twórcą polecenia
Find-ChildItem
cmdletźródło
Find-ChildItem
nie jest oficjalnym poleceniem cmdlet i nie jest zawarte w PowerShell; musisz pobrać to polecenie cmdlet z OneDrive jakiegoś faceta . Nie ma różnicy między tym a pobieraniem bash, cygwin, unixutils lub jakiegokolwiek innego programu, który pozwala na uruchamianie UNIX-afind
.Bez zainstalowanych dodatkowych poleceń cmdlet możesz po prostu użyć
Get-ChildItem
:źródło
dir
,ls
lubgci
, jeśli nie jesteś napisanie skryptu.Jeśli używasz funkcji wyszukiwania Unixa do wyszukiwania plików w hierarchii katalogów, wówczas sposobem Powershell jest użycie polecenia cmdlet
Get-ChildItem
(alias togci
) i filtrowanie wyników za pomocą polecenia cmdletWhere-Object
(alias towhere
).Na przykład, aby znaleźć wszystkie pliki (zaczynające się
C:\Users\
i rekurencyjnie) ze słowem „niezbędny” w nazwie, użyj następującego polecenia:Ta
-like
opcja pozwala używać symboli wieloznacznych do dopasowywania wzorców.źródło
Ten nie jest dokładnie znalezieniem GNU, ale ściślej pasuje do filozofii wiersza poleceń Linuksa w PowerShell:
Przykład:
Uwaga: Wszystko zwracane po „|% FullName” jest ciągiem, a nie obiektem.
Możesz także skorzystać z opcji Where Operator, „?”, Jednak jest to więcej pracy i niewiele szybsze:
Oto szybki skrót:
źródło