如何使用powershell选择没有扩展名的文件

Slo*_*uff 4 powershell

我有一个包含大量目录和文件的驱动器,其中一些已损坏且没有文件扩展名.我想删除所有没有扩展名的文件.我已经尝试过gci | where {$_.extension -eq ""}并且有gci | where {$_.extension -eq "."}各种各样的变化,但最终却没有在驱动器上得到任何东西.

如果我查看gci | select Extension文件的结果显示没有扩展名,就像一个目录,不知道去哪里.

任何帮助,将不胜感激.

The*_*ian 9

gci -File -Recurse | ?{!($_.Extension)}
Run Code Online (Sandbox Code Playgroud)


mkl*_*nt0 5

最简单,最快的解决方案(PSv3 +)是使用-Filter参数

Get-ChildItem -File -Filter *.
Run Code Online (Sandbox Code Playgroud)

本答案所述

至于基于管道的解决方案

现在,PowerShell Core-Not交换机提供了简化的比较语句语法,该语法本身是Windows PowerShell v3 中引入的Where-Object(其内置别名为?),从而可以实现TheMadTechnician的以下更简洁的有用答案

Get-ChildItem -File | Where-Object -Not Extension
Run Code Online (Sandbox Code Playgroud)

正如TheMadTechnician的答案,这里采用隐式布尔逻辑:任何非空字符串的计算结果为$True在布尔上下文,因此应用-Not这意味着$True如果字符串只返回空的,也就是说,如果文件没有扩展名。


至于你尝试什么

gci | where {$_.extension -eq ""}原则上可以工作,除了它还包括directory

在PSv3 +中,您可以使用该-File开关将结果限制为files,如上所述。

PSV2必须添加一个条件脚本块的基础上,.PSISContainer只返回属性$True目录

gci | where { -not $_.PSIsContainer -and $_.extension -eq "" }
Run Code Online (Sandbox Code Playgroud)


归档时间:

查看次数:

1909 次

最近记录:

7 年,6 月 前