我有一个目录包含大约 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