Bash 将包含1400万个文件的目录拆分为多个子目录

Bash 将包含1400万个文件的目录拆分为多个子目录,bash,Bash,我有一个名为direct的目录,其中包含1400万个文件,格式为file54.txt,其中file54.txt中的数字54可以替换为介于100万和1400万之间的任何自然数。是否有办法将这些文件拆分为目录中的1000个子目录(标题为direct),这些目录总共包含1400万个文件?#/bin/bash #!/bin/bash for (( i=0; i < 14000000; ++i )); do (( dirname=i/14000 )) if (( i%14000 ==

我有一个名为
direct
的目录,其中包含1400万个文件,格式为file54.txt,其中file54.txt中的数字54可以替换为介于100万和1400万之间的任何自然数。是否有办法将这些文件拆分为目录中的1000个子目录(标题为
direct
),这些目录总共包含1400万个文件?

#/bin/bash
#!/bin/bash
for (( i=0; i < 14000000; ++i )); do
    (( dirname=i/14000 ))
    if (( i%14000 == 0 )); then
        mkdir -p direct/$dirname
    fi
    mv direct/file$i.txt direct/$dirname/file$i.txt
done
对于((i=0;i<14000000;++i));做 ((dirname=i/14000)) 如果((i%14000==0));然后 mkdir-p direct/$dirname fi mv direct/file$i.txt direct/$dirname/file$i.txt 完成
当然,使用mv需要几个小时才能处理1400万个文件。但是,如果您使用的是shell脚本以外的语言,例如python、java或c,那么速度应该会快得多。我从经验中了解到,使用java,在linux系统上使用一个2 TB硬盘大约需要半个小时。