在 UNIX 上,您如何将一个非常大的目录(可能包含数百万个文件)拆分为一些自定义定义的最大文件数的较小目录,例如每个目录 100 个?
如果您知道如何获得 wget
的奖励积分自动将文件下载到这些子目录中。所以如果有 100 万 .html
位于 www.example.com
的顶级路径中的页面, 如
/1.html
/2.html
...
/1000000.html
并且我们只需要每个目录 100 个文件,它会将它们下载到类似的文件夹中
./www.example.com/1-100/1.html
...
./www.example.com/999901-1000000/1000000.html
只有真正需要能够在
wget
之后的文件夹上运行 UNIX 命令已下载文件,但如果可以使用 wget
执行此操作因为它正在下载我很想知道!
最佳答案
另外一个选项:
i=1;while read l;do mkdir $i;mv $l $((i++));done< <(ls|xargs -n100)
或使用
parallel
:ls|parallel -n100 mkdir {#}\;mv {} {#}
-n100
一次接受 100 个参数,{#}
是作业的序号。
关于shell - 将非常大的目录拆分为 Unix 上的较小目录的单行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11173732/