Когда вы открываете папку в Проводнике или в FAR’е, файлы отсортированы по алфавиту. Это кажется настолько естественным, что непонятно, как может быть по-другому.
На самом-то деле, конечно, файлы отсортированы как попало, а именно - в том порядке, в котором они попали на диск, но все умеют сортировать список. Все, кроме тех, кому это действительно важно.
В моём древнем пепелаце, менять который на ультрасовременного «китайца» я не готов, стоит магнитола, которая читает с флешки файлы именно в том порядке, в котором они записаны. И если сделать в Проводнике Ctrl+C в исходной папке, а потом Ctrl+V на флешке, то скорее всего воспроизведение альбома начнётся с шестого трека, за которым последуют третий, восьмой и пятый. Поскольку обычно музыканты вкладывают в порядок песен какой-то смысл, хотелось бы избежать такого эффекта.
Поскольку у нас Linux, задача решается скриптом на bash. С рекурсией, всё как мы любим. Желающих насладиться прошу под кат.
#!/bin/bash
# копирует файлы по порядку
# Параметр - целевой каталог
IFS='
'
function copy_files() {
for f in $(find "${1}" -maxdepth 1 -type f -name "*.mp3" -printf "%f\n" | sort)
do
cp "${1}/${f}" "${2}/${f}"
sleep 0.2
while [ ! -f "${2}/${f}" ]; do sleep 0.2; done
done
}
function copy_dir() {
copy_files "${1}" "${2}"
for d in $(find "${1}" -maxdepth 1 -mindepth 1 -type d -printf "%f\n" | sort)
do
mkdir -p "${2}/${d}"
copy_dir "$1/${d}" "${2}/${d}"
done
}
copy_dir . "${1}"