dir <drive: [drive:]> /s | findstr /i <pattern>
- alternativa -
dir /s <drive:>\<pattern>
exemplo
dir c: d: /s | findstr /i example.txt
- alternativa -
dir /s c:\example.txt
O cmdlet Find-ChildItem
no Windows Powershell é equivalente ao comando de localização do Unix / Linux
Algumas das opções do 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
Divulgação: sou o desenvolvedor do Find-ChildItem
cmdlet
Sem cmdlets adicionais instalados, você pode simplesmente usar Get-ChildItem
:
Get-ChildItem -Filter *.zip -Recurse $pwd
Se você estiver usando o find do Unix para procurar por arquivos em uma hierarquia de diretórios,
o modo Powershell é usar o cmdlet Get-ChildItem
(alias is gci
) e filtrar os resultados com o cmdlet Where-Object
(alias is where
).
Por exemplo, para localizar todos os arquivos (iniciando em C:\Users\
e recursivamente) com a palavra 'essencial' em seu nome, use o seguinte:
PS> gci -Path "C:\Users\" -Recurse | where {$_.Name -like '*essential*'}
A opção -like
permite usar curingas para correspondência de padrões.
Este não é exatamente o GNU find, mas corresponde mais à filisofia da linha de comando do Linux sob o powershell:
PS> dir -recurse -ea 0 | % FullName | sls <grep_string>
Exemplo:
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
Nota: Tudo retornado após "|% FullName" é uma string, em vez de um objeto.
Você também pode usar o Where Operator, "?", no entanto, é mais trabalhoso e não muito mais rápido:
PS> cd C:\
PS> dir -Recurse -ea 0 | ? FullName -like "*Program*"
| ? FullName -like "*Microsoft*"
| % FullName
| out-gridview
Aqui está um atalho rápido:
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 .