将数据从900个不同的子文件夹复制到一个数组中

时间:2015-04-03 19:56:49

标签: arrays

我是处理大量数据的新手,我认为这里有人可能会提供帮助。结构如下:

我有一个名为“100”的父文件夹 在这个父文件夹中,我有10个子文件夹,标记为PKA1,PKA2等,直到PKA10。

在其中的每一个中,我有30个子目录相对于初始父文件夹:

1eV,2eV,3eV,高达30eV

在这些文件夹的每个文件夹中,我都有一个名为PKA.dump的文件。

我想复制每个PKA.dump文件夹的第20行并转储到数组中以便于处理。我怀疑这样的壮举是可能的,对我来说似乎很复杂。我加入了,所以我可以问这个问题。我认为这里的人会有解决这个问题的最好主意。

我希望最终会有30个阵列,每个阵列有30个不同的数据行

编辑:这是我对代码的尝试:我尝试编辑以满足我的需求。如何指定第20行?

find foo -type f -name PKA.dump |
while read file; do
    line=$(echo $file | sed 's/.*PKA.dump\([0-9]*\)$/\1/')
    sed -n -e "$line {p; q}" $file
done

2 个答案:

答案 0 :(得分:1)

这是一个应该做你需要的Powershell脚本:

Get-ChildItem PKA.dump -r | Sort-Object $_ | ForEach-Object { Get-Content $_ | Select -Index 19 } > output.txt

output.txt文件应该包含运行脚本的目录结构中名为PKA.dump的每个文件的第20行。

此外,这是一个简单的C#示例:

List<string> data = new List<string>();

foreach (string filePath in Directory.EnumerateFiles(@"C:\100", "PKA.dump", SearchOption.AllDirectories))
{
    string[] lines = File.ReadAllLines(filePath);
    data.Add(lines[19]); // zero based index for 20th line
}

string[] endResult = data.ToArray();

答案 1 :(得分:0)

考虑到你正在尝试使用java编程语言解决。

为了对大量数据执行读写操作,需要java.nio包的帮助,这些类基本上是为大量数据处理而设计的。

使用List / Queue存储从PKA.dump复制的行。无需创建如此多的数组。

步骤:

  1. 使用java.nio包类读取文件内容

  2. 将文件内容写入合适的数据结构,例如列表/队列

  3. 继续进行最终处理。