powershell - 将一个目录中的多个文件合并为一个文件
问题描述
我的目录树视图如下:
我想将一个目录中的多个文件组合(或假设附加)到一个文件中。意思是,文件夹中的单个文件与组合内容。因此,每个文件夹将包含带有组合数据的单个文件。我尝试了以下方法,但是这种方法的问题是它只能在一次迭代中读取单个文件。
get-childitem $dir -recurse | where { $_.extension -eq ".json" } | % {
#Combine the files.
}
本质上,我希望在单次迭代中读取文件夹中的所有文件。并将另一个文件夹数据放入下一次迭代。在 Powershell 中推荐的方法是什么?
解决方案
最简单的方法是使用内部 cmdlet
$dir = 'C:\Users\Alex\Desktop\In'
$items = get-childitem $dir -recurse -filter '*.json'
$fileOut = Join-Path $dir -ChildPath 'out.txt'
$result = @()
foreach ($item in $items) {
$result += (Get-Content $item.FullName | ConvertFrom-Json)
}
$result | ConvertTo-Json | out-file $fileOut
根据您的要求和您应该使用的文件:
- 一个数组列表,而不是用于非常大 (>>1.000) 结果数组的 powershell 数组
- 另一个解析器,而不是非常大的单个文件的获取内容(例如 .net 方法)
但是,如果这样做可以,则无需更改任何内容。
推荐阅读
- php - 管理面板中订单和订单状态表之间的关系
- c# - 使用开源代码 LiveCharts 获取以编程方式创建的散点图,但我无法获取图
- java - 如何以线程安全的方式在 JAX-RS 资源中使用 JerseyClient
- html - NVDA 将包含按钮的 div 视为按钮
- python - 有没有办法在不同模块之间传递 Python 中的 Class 对象并保留命名空间?
- url - Puppeteer page.goto 错误仅与 readFileSync
- python - 有没有更好的方法来重写下面的python代码,同时考虑到大列表的时间复杂度?
- python - 如何在 Tensorflow 2.0 中使用 Google Colab 的 TPU?
- javascript - 摩卡单元测试:超时后如何强制停止执行测试
- python - 处理字符串中的单引号