На выходных "гулял" на свадьбе племянника. Перед регистрацией ко мне обратилась родня с просьбой записать на диск подборку mp3 файлов, при этом отсортировать файлы случайным образом. Так как времени было мало, а файлов -много, не нашел ничего лучше как быстро слепить скрипт на bash`e. Решил выставить порядковые номера в начале имени файла. Воспользовался примерами из известной книги
Advanced Bash-Scripting Guide
#! /bin/bash
#
namescript="sc.sh";
for filename in * # Нет необходимости использовать basename,
# поскольку "*" возвращает имена, не содержащие "/".
do
# себя не переименовываем
if [ "$filename" != "$namescript" ];
then
original=$filename
filename=${filename%.mp3} # Удаление завершающего mp3, так как буду удалять цифры из имени файла
filename=`echo $filename | tr -d 0-9.,` # Удаление ненужного из имени файла
ranf=$[RANDOM % 756] # генерируем число не больше 756 (количество файлов)
summ="-"
nfname=$ranf$summ$filename.mp3 # собираем имя файла = случ.число-файл.mp3
mv "$original" "$nfname" # переименовываем
fi
done
exit 0
Что делает скрипт:
- выполняет цикл, проходя по файлам в каталоге
- проверяет, чтобы имя текущего файла не совпадало с именем скрипта (его нам не надо переименовывать)
- удаляет расширение mp3, цифры, запятую и точку из имени файла (ну не понравились мне цифры в имени файлов)
- генерирует псевдослучайное число из диапазона 0-число файлов в каталоге
- подставляет это число и "-" в начало имени файла, переименовывает файл.