Windows 上相当于 Unix 上的 find 命令

Windows 上相当于 Unix 上的 find 命令

Unix 的对应版本是什么寻找Windows 上的命令?

我发现find.exeWindows 上的 更像是grep。我对

find . -name [filename]

答案1

dir <drive: [drive:]> /s | findstr /i <pattern>

- 选择 -

dir /s <drive:>\<pattern>

例子

dir c: d: /s | findstr /i example.txt

- 选择 -

dir /s c:\example.txt

答案2

无需安装其他 cmdlet,您可以直接使用Get-ChildItem

Get-ChildItem -Filter *.zip -Recurse $pwd

答案3

Windows Powershell 中的CmdletFind-ChildItem相当于 Unix/Linux find 命令

http://windows-powershell-scripts.blogspot.in/2009/08/unix-linux-find-equivalent-in.html

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

Find-ChildItem披露:我是cmdlet的开发人员

答案4

这个不完全是 GNU 发现,但更接近 powershell 下的 linux 命令行哲学:

PS> dir -recurse -ea 0 | % FullName | sls <grep_string>

例子:

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

注意:“| % FullName”之后返回的所有内容都是字符串,而不是对象。

您还可以使用 Where 运算符“?”,但是,这需要更多工作,并且速度不会更快:

PS> cd C:\
PS> dir -Recurse -ea 0 | ? FullName -like "*Program*" 
                       | ? FullName -like "*Microsoft*" 
                       | % FullName 
                       | out-gridview

这是一个快捷方式:

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 .

相关内容