相关疑难解决方法(0)

解决“mv:参数列表太长”?

我有一个文件夹,里面有超过一百万个文件需要排序,但我真的什么也做不了,因为一直在mv输出这条消息

-bash: /bin/mv: Argument list too long
Run Code Online (Sandbox Code Playgroud)

我正在使用此命令移动无扩展名的文件:

mv -- !(*.jpg|*.png|*.bmp) targetdir/
Run Code Online (Sandbox Code Playgroud)

shell bash arguments mv

94
推荐指数
7
解决办法
15万
查看次数

从多个文件高效提取数据到单个 CSV 文件

我有大量具有相同结构的 XML 文件:

$ cat file_<ID>.xml
... 
 ... 
   ...
      <double>1.2342</double>
      <double>2.3456</double>
      ...
   ...
 ... 
... 
Run Code Online (Sandbox Code Playgroud)

其中<double>每个 XML 文件中此类条目的数量是固定且已知的(在我的特定情况下为 168)。

我需要构建一个csv包含所有这些 XML 文件内容的文件,如下所示:

file_0001 1.2342 2.3456 ... 
file_0002 1.2342 2.3456 ... 
Run Code Online (Sandbox Code Playgroud)

等等。

我怎样才能有效地做到这一点?


我想出的最好的是:

$ cat file_<ID>.xml
... 
 ... 
   ...
      <double>1.2342</double>
      <double>2.3456</double>
      ...
   ...
 ... 
... 
Run Code Online (Sandbox Code Playgroud)

当我在一个包含 ~10K XML 文件的文件夹中计时上述脚本时,我得到:

./from_xml_to_csv.sh  100.45s user 94.84s system 239% cpu 1:21.48 total
Run Code Online (Sandbox Code Playgroud)

并不可怕,但我希望能处理 100 倍或 1000 倍以上的文件。我怎样才能使这个处理更有效率?

另外,使用我上面的解决方案,我是否会遇到全局扩展达到限制的情况,例如在处理数百万个文件时?(典型"too many args"问题)。

更新

对于对这个问题的一个很好的解决方案感兴趣的人,请阅读@mikeserve 的回答。到目前为止,它是最快的,也是扩展最好的。

zsh xml text-processing csv

3
推荐指数
1
解决办法
3029
查看次数

标签 统计

arguments ×1

bash ×1

csv ×1

mv ×1

shell ×1

text-processing ×1

xml ×1

zsh ×1