我有一个文件夹,里面有超过一百万个文件需要排序,但我真的什么也做不了,因为一直在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) 我有大量具有相同结构的 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 的回答。到目前为止,它是最快的,也是扩展最好的。