Создание простого скрипта, который переименовывает файл, выбирающий случайным образом из группы файлов

Идея состоит в том, чтобы воспроизвести звуковой файл приветствия во время запуска в KDE.

Внутри папки может быть, например, 10 аудиофайлов. Скажем, с именем 1.ogg 2.ogg 3.ogg и т. Д.

Фактически воспроизводимый файл называется greetings.ogg .

Как мне случайным образом взять один из этих файлов и переименовать его в greetings.ogg , не теряя 10 исходных файлов?

Я стараюсь изо всех сил, но у меня ничего не получается.

2
задан 16 August 2021 в 15:32

3 ответа

После долгих поисков я разобрался. Это так просто!!!!

Я создал папку с именем 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! Спасибо всем за помощь!!!

0
ответ дан 20 August 2021 в 10:26

Если ваши файлы не обязательно именуются по простой арифметической схеме, поддающейся использованию переменной оболочки $RANDOM, то другим вариантом является использование shuf:

shopt -s extglob

cp -- "$(printf '%s\n' !(greeting).ogg | shuf -n 1)" greeting.ogg

Расширенный glob в стиле ksh !(greeting).ogg избегает копирования существующего файла в себя - вы можете избежать этого, скопировав файл в другой каталог.

4
ответ дан 20 August 2021 в 10:26

Вы не можете одновременно "переименовать" файл и "не потерять оригинал", вам придется скопировать ( man cp ) случайно выбранный исходный файл. в greetings.ogg , что-то вроде:

# select among 0.ogg .. 9.ogg
cp $(( $RANDOM % 10 )).ogg greetings.ogg

Прочтите man bash , вы можете инициализировать $ RANDOM .

8
ответ дан 20 August 2021 в 10:26

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

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