Идея состоит в том, чтобы воспроизвести звуковой файл приветствия во время запуска в KDE.
Внутри папки может быть, например, 10 аудиофайлов. Скажем, с именем 1.ogg
2.ogg
3.ogg
и т. Д.
Фактически воспроизводимый файл называется greetings.ogg
.
Как мне случайным образом взять один из этих файлов и переименовать его в greetings.ogg
, не теряя 10 исходных файлов?
Я стараюсь изо всех сил, но у меня ничего не получается.
После долгих поисков я разобрался. Это так просто!!!!
Я создал папку с именем greetingsTest внутри моего /home/$user/ поэтому она выглядит следующим образом; /home/$user/greetingsTest
Внутри нее у меня есть 10 .mp3 файлов (возможно, однажды я увеличу их до 20). У меня также есть файл randomizer.sh, который выглядит следующим образом;
#!/bin/bash
###///// выбрать случайным образом десять файлов и сделать переименованную копию внутри /home/$user
cp $(( $RANDOM % 10)).mp3 /home/x/greetings.mp3
SO SIMPLE! Спасибо всем за помощь!!!
Если ваши файлы не обязательно именуются по простой арифметической схеме, поддающейся использованию переменной оболочки $RANDOM
, то другим вариантом является использование shuf
:
shopt -s extglob
cp -- "$(printf '%s\n' !(greeting).ogg | shuf -n 1)" greeting.ogg
Расширенный glob в стиле ksh !(greeting).ogg
избегает копирования существующего файла в себя - вы можете избежать этого, скопировав файл в другой каталог.
Вы не можете одновременно "переименовать" файл и "не потерять оригинал", вам придется скопировать ( man cp
) случайно выбранный исходный файл. в greetings.ogg
, что-то вроде:
# select among 0.ogg .. 9.ogg
cp $(( $RANDOM % 10 )).ogg greetings.ogg
Прочтите man bash
, вы можете инициализировать $ RANDOM
.