Решение проблемы сортировки файлов при записи на флеш-плеер
Недавно я купил себе flash-плеер iRiver T60, привлек он меня прежде всего своей простотой (которая не свойствена всяким iPod'ам, к примеру, копирование музыки не напрямую, а через спецпрограмму, читай, в будущем только iTunes) и соотношением "количество флеш-памяти/цена". Плеер отличный (разве, что наушники не очень), но когда я стал проигрывать, скопированную музыку, обнаружилось, что файлы проигрываются не в алфавитном порядке. Позже, путем исследований и экспериментов, я дошел до того, что они просто не сортируются. К примеру, альбом Orbital - In Sides:
$ ls -1
01 - The Girl With The Sun In Her Head.mp3
02 - P.E.T.R.O.L..mp3
03 - The Box (Part 1).mp3
04 - The Box (Part 2).mp3
05 - Dwr Budr.mp3
06 - Adnan's.mp3
07 - Out There Somewhere (Part 1).mp3
08 - Out There Somewhere (Part 2).mp3
А теперь не будем сортировать.
$ ls -1U
01 - The Girl With The Sun In Her Head.mp3
04 - The Box (Part 2).mp3
05 - Dwr Budr.mp3
08 - Out There Somewhere (Part 2).mp3
02 - P.E.T.R.O.L..mp3
07 - Out There Somewhere (Part 1).mp3
06 - Adnan's.mp3
03 - The Box (Part 1).mp3
Очевидно, система копирует файлы так, как быстрее, не сортируя их предварительно, то есть в порядке расположения на устройстве (а этот порядок в подавляющем большинстве случаев - не алфавитный). Решение этой проблемы (на мой взгляд, наиглупейшей) помог найти мне господин ssvda, за что ему огромнейшее Спасибо). Он написал, по моей просьбе, скрипт, копирующий рекурсивно все файлы из указанной директории в директорию назначения.
#!/bin/bash
# Авторские права: (c) ssvda, 2007
# Использование: "abcopy.sh откуда куда"
ME="${0}" # Имя скрипта (используем для рекурсивного вызова)
FROM="${1}" # Директория, из которой берутся файлы
TO="${2}" # Директория назначения
CUR="${PWD}" # Директория, из которой выполняется скрипт
# Если директория назначения не существует - создаем ее
[ -e "${TO}" ] || mkdir "${TO}"
cd "${TO}" # Идем в директорию назначения
TO="${PWD}" # Обновляем путь
cd "${CUR}" # Идем обратно...
cd "${FROM}" # ...и заходим в директорию, с файлами
FROM="${PWD}" # Обновляем путь
# Выводим список файлов (директорий) в столбик по алфавиту
ls -1 | sort | while read I
do
IT="${FROM}/${I}"; # Абсолютный путь элемента
[ -d "${IT}" ] &" "${IT}" "${TO}/${I}" # ...вызываем рекурсивно скрипт...
} || {
cp "${IT}" "${TO}" # ...иначе копируем файл.
}
done
Сохраняем как abcopy.sh, делаем его исполняемым и копируем в /usr/bin. Все. Остается одно непонятным: зачем инженеры решили обойтись без сортировки? Частично мне стало понятно, когда по моей просьбе проверили в каком порядке копируются файлы в Windows, именно в алфавитном. Если плеер позиционируется как "многоплатформенный" (windows - mac - linux), то будьте добры проверять его удобство использования на всех платформах! >:( Взято из заметок арчера.
Комментарии:
Нет комментариев.
Пожалуйста войдите или зарегистрируйтесь чтобы оставлять комментарии.