Я работаю в системе, в которой первая буква каждого имени файла должна быть случайной - не обязательно уникальной , просто случайной. Я хотел бы иметь возможность запустить это из задания cron.
Например, я мог бы указать ему список файлов, например
song.mp3 song1.mp3 song2.mp3
song3.mp3 song4.mp3 song5.mp3
, и изменить имена файлов на что-то вроде этого:
a song.mp3 g song1.mp3 k song2.mp3
r song3.mp3 l song4.mp3 e song5.mp3
Есть ли способ сделать это?
Смотрите этот сценарий. Я попробовал именно то, что вы хотели.
#!/bin/bash
for item in *.mp3
do
mv "$item" "$(cat /dev/urandom | tr -cd 'a-z' | head -c 1) $item"
done
Как выбираются случайные буквы
Здесь я собираю строки из /dev/urandom
и удаляю все символы, которые не находятся между [az] и, наконец, сохраняя только первую букву.
Как использовать
Скопировать код в файл, скажем, rename_song.sh
, дать ему разрешение на выполнение с помощью терминала следующим образом:
chmod +x /path/to/rename_song.sh
Копировать rename_song.sh
в каталог, где у вас есть .mp3
файлов. запустите скрипт из терминала (сначала перейдите в каталог, где у вас есть .mp3
файлов), как,
./rename_song.sh
Если у вас есть список файлов, таких как
song.mp3 song1.mp3 song2.mp3
song3.mp3 song4.mp3 song5.mp3
Они будут переименуйте так:
a song.mp3 g song1.mp3 k song2.mp3
r song3.mp3 P song4.mp3 A song5.mp3
Если вам нужны буква и число, тогда замените tr -cd 'a-z'
на tr -cd 'a-z0-9'
, и всегда лучше использовать простой глобус оболочки вместо парсинга вывода ls
].
Вы можете использовать переменную env $ RANDOM:
#!/bin/bash
for F in *.mp3 ; do
mv $F $RANDOM.$F
done
, которая будет перемещать файлы:
songa.mp3
song7.mp3
в
1875.songa.mp3
32654.song7.mp3
, например.
Вот однострочные версии скрипта @ Joseph, чтобы вы могли вставить его в терминал:
Сначала перейдите в нужный каталог:
cd /PATH/TO/DIRECTORY/
и затем вы можете запустить команду непосредственно из терминала:
for F in $(ls *.mp3); do mv "$F" "$RANDOM.$F" ; done;
и ее более короткая версия будет:
for F in *.mp3 ; do mv "$F" "$RANDOM.$F" ; done
Могу ли я также отметить, что они будут делать только случайные числа в начало в любом случае.
703x470
вместо 713x470
? Как left+right, обрезающий = 3+14 = 17px
, что, когда вычтено от 720
703
, а не 713
.
– Mooncrater
31 May 2018 в 10:05