在 Bash 中是否有与此搜索等效的简单 Windows 搜索功能?

在 Bash 中是否有与此搜索等效的简单 Windows 搜索功能?

如果我输入

locate something | grep "someEnding$"

在 shell 中,它会花一秒钟给我提供系统中绝对路径包含“something”并以“someEnding”结尾的每个文件的列表。

有没有办法在 Windows 中做到这一点?最好是快一点,但如果没有也可以。

答案1

我认为在 Powershell 中它将是:

Get-ChildItem -Recurse *something* | Select-String "someEnding$"

答案2

在 powershell 中,做同样的事情很容易。

# gathering files with something in the name 
Get-ChildItem -Path c:\temp\*something*
<# this returns 
    Répertoire : C:\temp

Mode                 LastWriteTime         Length Name                                                                                                                             
----                 -------------         ------ ----                                                                                                                             
d-----        27/08/2021     14:16                dir with something in the name                                                                                                   
-a----        27/08/2021     14:18              9 another something file.txt                                                                                                       
-a----        27/08/2021     14:19             24 somethingfile.txt 
#>
# note that you must add -Recurse as parameter if you're looking for only on the first level
Get-ChildItem -Path c:\temp\*something* -Recurse
# adding -file parameter, collect only file, not directory (or sub-directories)
Get-ChildItem -Path c:\temp\*something* -File -Recurse
<# this returns
    Répertoire : C:\temp

Mode                 LastWriteTime         Length Name                                                                                                                             
----                 -------------         ------ ----                                                                                                                             
-a----        27/08/2021     14:18              9 another something file.txt                                                                                                       
-a----        27/08/2021     14:19             24 somethingfile.txt     
#>

如果你正在寻找特定内容,那就不同了

# 1 - collect list of file an put them in a var
$Allfiles = Get-ChildItem -Path C:\Temp\*.txt
# 2 - foreach loop to look for file containing specific word
foreach ($file in $Allfiles)
    {
    Get-Item -Path $file.FullName | Select-String -Pattern "something"
    }
<# I've only one file containing "something"
the return is 
C:\Temp\another something file.txt:1:something
#>

Windows Powershell 是 Windows 上的原生程序,Powershell 存在于许多操作系统中。这是一个面向脚本语言的对象。输出始终是一个具有属性的对象(或对象集合)。在第一个示例中,输出显示 4 个属性(Mode、LastWriteTime、Length 和 Name),但这是默认显示。还有其他几个属性(CreationTime、Directory(父级)、FUllName、LastAccessTime、Extension、Length、BaseName(无扩展名的名称...)

操作和获取所需信息非常容易,仅此而已。不仅可以获取,还可以修改、设置、添加、移除、删除……每个 cmdlet 都像动词-名词一样构建。动词是动作动词,名词是上下文。使用 Get-command 显示所有可用的 cmdlet。使用 Get-Command Get-* 仅显示以 get- 开头的 cmldets……

相关内容