Equivalente ao comando find do Unix no Windows

27

Qual é o equivalente do comando localizar do Unix no Windows?

Vejo que o find.exe no Windows é mais parecido com um grep . Eu estou especialmente interessado no equivalente de

find . -name [filename]
    
por ARV 16.03.2012 / 16:10

5 respostas

16
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
    
por 16.03.2012 / 16:16
24

O cmdlet Find-ChildItem no Windows Powershell é equivalente ao comando de localização do Unix / Linux

link

Algumas das opções do Find-ChildItem

  1. Find-ChildItem -Type f -Name ".*.exe"
  2. Find-ChildItem -Type f -Name "\.c$" -Exec "Get-Content {} | Measure-Object -Line -Character -Word"
  3. Find-ChildItem -Type f -Empty
  4. Find-ChildItem -Type f -Empty -OutObject
  5. Find-ChildItem -Type f -Empty -Delete
  6. Find-ChildItem -Type f -Size +9M -Delete
  7. Find-ChildItem -Type d
  8. Find-ChildItem -Type f -Size +50m -WTime +5 -MaxDepth 1 -Delete

Divulgação: sou o desenvolvedor do Find-ChildItem cmdlet

    
por 25.06.2012 / 10:32
12

Sem cmdlets adicionais instalados, você pode simplesmente usar Get-ChildItem :

Get-ChildItem -Filter *.zip -Recurse $pwd
    
por 15.05.2015 / 00:13
3

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.

    
por 25.12.2016 / 09:47
1

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 .
    
por 19.12.2017 / 20:28