gpt4 book ai didi

Powershell 脚本以相反的顺序递归地列出文件,类似于这个 bash 脚本

转载 作者:行者123 更新时间:2023-12-02 22:46:04 25 4
gpt4 key购买 nike

我正在尝试将此 bash 脚本转换为 powershell。我这样做是因为适用于 Linux 的 Windows 子系统目前无法在 Google Drive File System 的已安装驱动器上运行,因此我需要使用 powershell。

背景

我需要在顶级父文件夹上运行此 powershell 脚本,以在约 700,000 个深层嵌套文件夹中导入 8700 万个 json 文件。我对更好的方法持开放态度。

我的 Bash 解决方案

#!/bin/sh

function import_from_start() {
echo "starting import from front"
find "$1" -name '*.json' | while read file; do
mongoimport --host=datalake7 --db=CA_facebook_copy --collection=test_import --type="json" --file="$file"
done
}

function import_from_end() {
echo "starting import from back end"
find "$1" -name '*.json' | sort -r | cut -f2 | while read file; do
mongoimport --host=datalake7 --db=CA_facebook_copy --collection=test_import --type="json" --file="$file"
done
}

import_from_start "$1" &
import_from_end "$1"

我目前尝试的 powershell 脚本

param (
[Parameter(Mandatory=$true)][string]$Src,
[Parameter(Mandatory=$true)][string]$Collection
)

$Extension = '*.json'
Get-ChildItem -Path $Src -Filter $Extension -Recurse | Where-Object {!$_.PsIsContainer} | ForEach-Object {

.\mongoimport.exe --host datalake7 --db CA_facebook_copy --collection $Collection --type json --file $_.FullName
}

我的目标

我需要同时从文件列表的开头和结尾导入。我正在使用这种方法,因为它为每个文件创建和销毁与 mongodb 的连接非常慢。

最佳答案

现在排序可以基于任何列。所以在你的情况下,你可以获取所有文件 fullname.length 因为你已经使用了 fullname 并且可以按降序排序。

替换

Get-ChildItem -Path $Src -Filter $Extension -Recurse | Where-Object {!$_.PsIsContainer} | ForEach-Object {

.\mongoimport.exe --host datalake7 --db CA_facebook_copy --collection $Collection --type json --file $_.FullName
}

有了这个:

Get-ChildItem -Path $Src -Filter $Extension -Recurse | Where-Object {!$_.PsIsContainer} | ForEach-Object {

.\mongoimport.exe --host datalake7 --db CA_facebook_copy --collection $Collection --type json --file $_.FullName
}| Sort-Object @{expression = {$_.fullname.length}} -descending

我在 foreach 循环之后添加了排序对象部分。

希望对您有所帮助。

关于Powershell 脚本以相反的顺序递归地列出文件,类似于这个 bash 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49719503/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com