Powershell 相当于 Cat ./* ../path2/* > file.sql

Powershell equivalent of Cat ./* ../path2/* > file.sql

我正在尝试翻译一个 Linux 命令,以便 Windows 用户可以轻松地用于某个项目,但我没有运气在 Powershell 中找到类似的命令。

我有两个路径,其中包含一些 SQL 和 CSV 文件。我需要的是这个命令:

cat ./* ../path/* > new_file.sql

这将获取路径 1 中所有文件的所有内容,然后获取路径 2 中所有文件的所有内容,并将其写入文件。

我以为我可以在 Powershell 中做类似的事情,但显然行为截然不同。

我试过的有:

cat ./*, ../path/* > new_file.sql
Get-Content ./*, ../path2/* | Out-File new_file.sql

他们都做同样的事情,这似乎...我不确定,为 path1 中的每个文件获取整个 path2/*?输出迅速膨胀到数十兆字节。两个目录的合并内容大约为 40 KB。

有人知道吗?我找不到合适的答案。谢谢!

编辑:我想我知道问题出在哪里了。我想我应该只使用示例的实际路径。第一条路径是 ./*,它似乎一直循环遍历它自己创建的 Out-File。我更新了标题和示例以反映这一点。

在连接文件内容之前将文件作为一个单独的步骤枚举(这样 Get-Content 就不会在中途意外发现新文件):

$files = Get-ChildItem ./,../path2/ -File
$files |Get-Content |Out-File newfile.txt

如果您愿意,可以将这些语句合并到一个管道中:

(Get-ChildItem ./,../path2/ -File) |Get-Content |Out-File newfile.txt