如何在PowerShell中对目录及其子目录中的所有文件运行dos2unix

3

我可以在PowerShell中对一个文件运行dos2unix

dos2unix ./assets/style.css

如何对“./assets/”及其子目录下的所有CSS文件执行此操作?
1个回答

7
'.\assets' | Get-ChildItem -Recurse -File -Filter '*.css' | ForEach-Object {
    dos2unix $_.FullName
}

解释

Get-ChildItem类似于dir或者ls(在powershell中,这两个命令的别名就是该cmdlet)。 -File表示只返回文件。 -Recurse表示递归子目录。 -Filter让我们只获取所需的文件模式。

然后我们将其管道传递到ForEach-Object中,以执行一个脚本块对于返回的每个文件,在其中,我们只需执行dos2unix命令。

FullName是文件对象的属性,它包含文件的完整路径。


关于 '.\assets' 的管道使用有些奇怪。为什么不直接使用 Get-ChildItem Assets -Recure -Filter *.css | Foreach {dos2unix $_.FullName} 呢?请注意,您不需要引用 *.css。此外,使用 -File 选项只适用于 PowerShell v3 及更高版本。 - Keith Hill
我更喜欢那种风格。所以在可能的情况下,我倾向于像 $path | Join-Path -Child Path 'whatever' 这样做事情。我只是喜欢管道!关于 -File 的观点很好。 - briantist
你能告诉我如何静默运行它,以便不打印输出吗? - Annie
尝试将其管道传递到Out-Null。我现在正在使用移动设备,无法发布适当的示例。 - briantist

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接