DILL Directory в 3 каталогах

У меня есть каталог, содержащий около 24800 .mp4 файлов, как я могу разделить его на 4 каталога, соответствующих всем файлам, не сохраняя оригинальные файлы 24800 в одном каталоге? Есть ли какая-либо команда mv / move, чтобы сделать это?

0
задан 27 March 2021 в 11:27

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
0
ответ дан 2 April 2021 в 05:23
#!/bin/bash

# Paste this to a file and make the file executable using chmod +x filename
# Run the script file like so ./filename or bash filename
# This will create 4 new directories in the current directory where you run the script
# It will move the files from the source directory to the new directories and split them equally ~

# Change source_dir/ below to the path of your source directory.
source_dir="source_dir/"


file_extension="mp4"
drectories=4
file_num="$(ls -l $source_dir | wc -l)"
max_files="$(($file_num/$drectories))"
max_files2="$max_files"
dir_num=1
i=0

mkdir -p new_dir"$dir_num"

for f in "$source_dir"*".$file_extension"
        do
        if (($dir_num == $drectories))
        then
        # Remove echo below when satisfied with output to do the actual moving
        echo mv "$f" new_dir"$dir_num"
        else
        (($i == $max_files2)) && ((dir_num++)) && max_files2="$(($max_files2+$max_files))" && mkdir -p new_dir"$dir_num"
        # Remove echo below when satisfied with output to do the actual moving
        echo mv "$f" new_dir"$dir_num"
        ((i++))
        fi
        done

0
ответ дан 2 April 2021 в 05:23

Другие вопросы по тегам:

Похожие вопросы: