Генерируем уникальное имя файлу

Ноябрь17

bin_bash_script

Очень часто скрипты создают какие-то файлы, с которыми потом иногда приходится работать. Нам нужно получить условия, при которых каждый созданный файл был бы уникально назван, в не зависимости от сторонних факторов.


Первое что приходит на ум — система префиксов и суффиксов. Название файла условно разбивается на несколько составных логических частей, комбинируя которые получается финальное имя.
Например:

название_дата_время
file1_17.11.2015_16.51

Приведенный пример является одним из самых популярных и логичных, в данной ситуации.

Но, допустим, что нам нужно получать по несколько файлов каждую минуту, или даже секунду.
В этом случае так же можно было бы дополнить существующую систему, но в данной статье хотелось бы разобрать немного другой метод. Он тоже иногда бывает довольно полезным.
Для генерации суффикса имени файла мы используем программу mcookie, которая генерирует случайную строку.

#!/bin/bash

prefix_name="file_"
suffix_name='mcookie'

full_filename=$prefix_name.$suffix_name

echo "Имя файла = \"$full_filename\""
exit 0

Запускаем наш скрипт и делаем его исполняемым. При желании сюда же в название можно добавить дату и время создания файла. Такие конструкции часто используются для создания Бекапов.

Поделиться в соц. сетях


Copyright © 2013-2016. All rights reserved.

Опубликованно Ноябрь 17, 2015 by Feanor184 в категории Bash

4 комментарий(ев) к записи “Генерируем уникальное имя файлу

  1. Юлик

    ОООчень актуально сейчас для меня. Я тоже столкнулась с проблемой, когда суффиксов не хватает. Будем пробовать данный метод )))

  2. Максим

    Недавно писал скрипт для автоматического поднятия игра в случае завершения, получилось следущее:
    #!/bin/sh
    log=samp.log
    dat=`date`
    samp=»/SERVER/samp03svr»
    cd /SERVER

    echo «${dat} watchdog script starting.» >>${log}
    while true; do
    echo «${dat} Server exited, restarting…» >>${log}
    mv /SERVER/server_log.txt /SERVER/server_log.`date ‘+%m%d%y%H%M%S’`
    ${samp} >> $log
    sleep 2
    done

    Довольно долго парился, ибо постоянно писало, что не хватало то одной библиотеки, то другой.
    CentOS 6.

  3. ТестДрайв

    Я обычно через PHP-файл генерю. Так как-то привычней. Годы программинга позади сказываются :) Хотя по скорости не замерял, через баш может и быстрее оказаться. Но для мелких задач пока самое быстрое и оптимальное решение для меня.

  4. Влад

    Автору, огромное спасибо, как до меня это только не дошло, буду пользоваться этим, еще раз спасибо

Оставьте комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

*

=

Перед тем, как оставить комментарий, убедитесь, что вы ознакомились с правилами комментирования этого блога.