shell - 将非常大的目录拆分为 Unix 上的较小目录的单行

标签 shell unix filesystems wget

在 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/

相关文章:

git - 如何使用 git 和链 git config user.name 进行克隆

linux - Unix 实用程序可移植性/兼容性表

Java (JGIT) Files.delete() 无法删除文件,但 file.delete() 成功

linux-kernel - debugfs 在网络命名空间中不可用

java - 使用 java.lang.ProcessBuilder 运行 root 命令

linux - 使用 shell 脚本替换文件中的标记

linux - 如何在 GDB 中使用 shell 命令的输出作为 GDB 命令的参数?

c - 动态创建线程并传递一个整数

linux - LD_LIBRARY_PATH 不工作

c++ - 为什么语句中的链接方法无法给出预期的结果?