将目录拆分为 3 个目录

将目录拆分为 3 个目录

我有一个目录包含大约 24800 个 .mp4 文件,我怎样才能将其拆分为 4 个包含所有文件的目录,而不将原始 24800 个文件保存在一个目录中? 有没有 MV/move 命令可以做到这一点?

答案1

如果文件名中没有系统,允许您使用通配符移动文件的部分内容,那么我将使用 bash 文本工具在文本文件中创建文件列表:

ls > filelist.txt

然后将其分成不同的部分,然后针对每个部分sed编辑每一行,使其构成移动命令,例如

filename.mp3

变成

mv "filename.mp3" targetdir

然后可以在命令行中获取这些文本文件,以自动执行将文件移动到不同文件夹的每个命令。例如,如果这样的文本文件名为“part_1”,那么您可以按如下方式获取该文件:

. part_1

或者

source part_1 

#!/bin/bash或者,您可以使包含有效命令的文件可执行,然后执行它。最好在文件的第一行添加一个 shebang ( )。

答案2

/bin/echo当你觉得脚本达到了预期效果时,你可以删除它

#!/bin/bash

a=(source/*)
for ((b=0, c=$((${#a[@]} / 4)),d=0; b < ${#a[@]}; b+=c)); do
    mkdir -p target/$((++d))
    printf %s\\0 "${a[@]:$b:$c}" | xargs -r -0 /bin/echo mv -t target/$d --
done

相关内容