У меня есть "умный" телефон, который, кажется, не имеет музыкальную функцию перестановки, таким образом, следующая лучшая вещь состоит в том, чтобы записать сценарий удара для предварительного ожидания всех имен файлов в текущем каталоге со случайным числом.
Действительно ли это трудно сделать?
Нет, это не сложно сделать. Однако это испортит ваши тщательно продуманные имена файлов, и их будет трудно отменить.
Вы можете использовать $RANDOM
как простой источник случайных чисел в bash. Для вашего
случая:
#!/bin/bash
for file in *; do
mv "$file" $RANDOM-"$file"
done
Я не проверял это. Возможно, вы захотите проверить это самостоятельно на небольшой образце, чтобы убедиться, что вы знаете, что он делает.
Этот скрипт перетасует файлы и перетасует их, если они уже были перетасованы. Если вы передадите ему аргумент -u
, он перетасует файлы (удалит случайный префикс).
#!/bin/bash
for file in *.mp3
do
if [[ -d $file ]]
then
continue # skip directories
fi
if [[ $file =~ ^1[0-9]{5}9-(.*).mp3$ ]] # get basename
then
name=${BASH_REMATCH[1]} # of a previously shuffled file
else
name=${file%.mp3} # of an unshuffled file
fi
if [[ $1 != -u ]]
then
mv "$file" "1$(printf "%05d" $RANDOM)9-$name.mp3" # shuffle
else
if [[ ! -e "$file.mp3" ]]
then
mv "$file" "$name.mp3" # unshuffle
fi
fi
done
Он использует пятизначное случайное число фиксированной ширины после "1", за которым следует "9-", поэтому имена перетасованных файлов имеют вид: 1ddddd9-filename, возможно с пробелами - и прочими вещами.1983.mp3
.
Если вы повторно запустите скрипт, он перетасует файлы, изменив случайное число в префиксе.
Аргумент -u
удалит префикс 1ddddd9-
.
Для работы скрипта требуется Bash >= версии 3.2.
Не очень сложно. Что-то вроде:
for i in *; do mv "$i" $RANDOM-"$i"; done