Как я могу добавить случайную букву / цифру к началу каждого имени файла?

Я работаю в системе, в которой первая буква каждого имени файла должна быть случайной - не обязательно уникальной , просто случайной. Я хотел бы иметь возможность запустить это из задания 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

Есть ли способ сделать это?

1
задан 8 December 2013 в 19:46

3 ответа

Смотрите этот сценарий. Я попробовал именно то, что вы хотели.

#!/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 ].

0
ответ дан 8 December 2013 в 19:46

Вы можете использовать переменную env $ RANDOM:

#!/bin/bash
for F in *.mp3 ; do
    mv $F $RANDOM.$F
done

, которая будет перемещать файлы:

songa.mp3
song7.mp3

в

1875.songa.mp3
32654.song7.mp3

, например.

0
ответ дан 8 December 2013 в 19:46

Вот однострочные версии скрипта @ 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

Могу ли я также отметить, что они будут делать только случайные числа в начало в любом случае.

0
ответ дан 8 December 2013 в 19:46
  • 1
    Shouldn' t это быть 703x470 вместо 713x470? Как left+right, обрезающий = 3+14 = 17px, что, когда вычтено от 720 703, а не 713. – Mooncrater 31 May 2018 в 10:05

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

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