Mikhail Eliseev Asked:2022-07-21 20:00:56 +0000 UTC2022-07-21 20:00:56 +0000 UTC 2022-07-21 20:00:56 +0000 UTC 如何将文件夹中的所有文件分散到 10 个子文件夹中? 772 有一个文件夹,里面有很多.mp4文件如何使用批处理文件(不是powershell)在文件夹内创建多个子文件夹并将这些文件分散到子文件夹中,使每个子文件夹中的文件不超过10个。 当然,如果我们在文件夹中有非多个.mp4文件,那么最后一个子文件夹中将上传少于 10 个文件。 bash cmd 1 个回答 Voted Best Answer Zt. 2022-07-22T00:51:43Z2022-07-22T00:51:43Z 脚本.sh #!/usr/bin/env bash DIR="${0%/*}" # значения по умолчанию dir_in="$DIR/papka_A" dir_out="$DIR/papka_B" subdir_name="subpapka" ext="mp4" number=10 while [[ "$1" =~ ^- && ! "$1" == "--" ]]; do case $1 in --dir_in ) shift; dir_in=$1;; --dir_out ) shift; dir_out=$1;; --ext ) shift; ext=$1;; --number | -n ) shift; number=$1;; --subdir_name ) shift; subdir_name=$1;; esac; shift; done if [[ "$1" == '--' ]]; then shift; fi mkdir -p "$dir_out" i=0 while [[ $(ls "$dir_in"/* | grep ".$ext$") != "" ]]; do subdir="$dir_out"/"$subdir_name"_$(printf "%03d" $i) mkdir -p "$subdir" mv $(ls "$dir_in"/* | grep ".$ext$" | head -n $number) "$subdir" i=$[i+1] done exit 为了更好地理解,考虑一个例子 你可以在 bash 中准备一个带有这样一个单线的多边形 mkdir -p papka_A && touch papka_A/file_{01..99}.mp4 && touch papka_A/file_{a..z}.xxx 在这里,我们创建了一个文件夹papka_A和 99 个扩展名为mp4的文件,还添加了其他背景文件 我们得到这样的东西 $ tree papka_A papka_A ├── file_01.mp4 ├── file_02.mp4 ... ├── file_98.mp4 └── file_99.mp4 ├── file_a.xxx ├── file_b.xxx ... ├── file_y.xxx └── file_z.xxx 使我们的脚本可执行并运行它 chmod +x script.sh ./script.sh --dir_in papka_A --dir_out papka_B --ext mp4 -n 10 --subdir_name subpapka 如果需要,请在其中指定您的参数。运行脚本后,我们最终得到: $ tree papka_B papka_B ├── subpapka_000 │ ├── file_01.mp4 │ ├── file_02.mp4 │ ├── file_03.mp4 │ ├── file_04.mp4 │ ├── file_05.mp4 │ ├── file_06.mp4 │ ├── file_07.mp4 │ ├── file_08.mp4 │ ├── file_09.mp4 │ └── file_10.mp4 ├── subpapka_001 ... └── subpapka_009 ├── file_91.mp4 ├── file_92.mp4 ├── file_93.mp4 ├── file_94.mp4 ├── file_95.mp4 ├── file_96.mp4 ├── file_97.mp4 ├── file_98.mp4 └── file_99.mp4 在papka_A文件夹中,当前文件将保持没有mp4扩展名。 $ tree papka_A papka_A ├── file_a.xxx ├── file_b.xxx ├── file_c.xxx ... └── file_z.xxx
脚本.sh
为了更好地理解,考虑一个例子
你可以在 bash 中准备一个带有这样一个单线的多边形
在这里,我们创建了一个文件夹papka_A和 99 个扩展名为mp4的文件,还添加了其他背景文件
我们得到这样的东西
使我们的脚本可执行并运行它
如果需要,请在其中指定您的参数。运行脚本后,我们最终得到:
在papka_A文件夹中,当前文件将保持没有mp4扩展名。