我想编写在所有 PowerShell 平台上运行的代码。以下代码\
在 Windows 上使用路径分隔符生成输出,/
在 Linux 上使用路径分隔符生成输出。
Get-ChildItem -File -Recurse | ForEach-Object { $_.FullName }
我想排除目录下任何位置的obj
文件。目录的数量和深度obj
未知。一种方法是使用以下内容过滤掉那些。但是,这在 Linux 上不起作用,因为路径分隔符不同。
Get-ChildItem -File -Recurse |
Where-Object { -not ($_.FullName -like '*\obj\*' |
ForEach-Object { $_.FullName }
使用正则表达式模式似乎可行,但我想知道是否有更清晰的方法来做到这一点。我觉得这很尴尬。不仅如此,该\\
字符作为 Linux 文件名的一部分也是有效的,这可能会导致该代码存在故障漏洞。
Get-ChildItem -Recurse |
Where-Object { -not ( $_.FullName -like "*[/\]obj[/\]*") } |
ForEach-Object { $_.FullName }