powershell - PowerShell get-childitem 拒绝排除目录
问题描述
我试图简单地搜索网络共享中的文件,但排除无用的目录。-exclude
我知道有get-childitem
.
但是,当我尝试运行命令 get-childitem -recurse -exclude \\share\folder\excludeddir
时,PowerShell 会忽略 -exclude 参数。已尝试排除路径的任何和所有排列。
为什么powershell忽略-exclude参数?有什么方法可以简单地排除目录而无需编写多行代码?不,管道传输的方法| ? { $_.FullName -inotmatch 'excludeddir' }
不可用,因为如果在网络共享中使用它,powershell 会完全忽略它。
解决方案
如果要排除名为Desktop
.
Get-ChildItem -Recurse -File | Where {
$_.Directory.Name -ne 'Desktop'
} | Select-String -Pattern 'mystring'
解释:
问题-Exclude
在于它仅适用于当前项目路径的叶子项目。在线文档在解释其-Exclude
工作原理和特性方面存在不足。因此,如果您 exclude Desktop
,任何名为的文件Desktop
或任何以名为的文件夹结尾的文件夹路径Desktop
都将被排除。但是,它在使用时不排除排除目录的任何子文件夹或子文件-Recurse
。我不知道这是设计使然还是疏忽。
如果您只搜索文件,则该-File
参数只返回文件。由于FileInfo
对象有一个Directory
属性,它是一个DirectoryInfo
对象,你可以引用它的Name
属性来确定返回文件的父目录名。
推荐阅读
- strapi - Allow image captions on strapi
- node.js - NPM update failed. Error says to remove file?
- php - 如何使用 PHP 创建 html 表以显示基于 MySQL 的按月付款
- javascript - Time converter Web design page
- html - How to get the path of tag if it has a space in its class or id
- mybatis - Batch insert flush return empty array
- javascript - jQuery: how to style background color of a button?
- unity3d - Unity Door open with "e"?
- html - How to permanently enable firefox dev-tools page ruler?
- sql - ERROR DefaultJDBCWrapper$: executeUpdate failed for query: