От это я сегодня выдал умняка
- 26.06.15, 22:42
Бля, ну точно я гений. От это я сегодня наконец-то выдал умняк. Недели две маялся, как присвоить файлу уникальное имя, которое сохранит расширение (если оно есть) и так, чтобы было возможно откатить переименования, да еще и обрабатывать файлы по маске и списком.
Две бессонных недели - и сегодня посетило озарение. Элегантный скрипт, которым я уже переименовал в своем компе все, что только можно (шутка).
Очень горжусь. На шестом десятке осовить новую ось, новый язык и сваять нечто реально работающее (аналогов, кстати, не нашел) - это пять с плюсом. Впрочем, в своё время аналогичная моя программулина под вынь под названием now тоже шороху наделала.
Если нужен реально работающий скрипт, то строчку №46 надо раскомментить. Кому нужен исходник не в виде фотки, а текстом - то вот (но строчку 46 надо-таки раскоментить)
== begin file
#!/bin/bash
E_BADARGS=65 ## Это просто номер ошибки для выхода без параметров - понты
logfile="renamed_files.log"
if [ ! -n "$1" ]; then
echo "Для переименования необходимо указать имя одного или нескольких файлов или их маску : `basename $0` file1 file2 (*.jpg *.png *.txt)"
exit $E_BADARGS
fi
echo "#!/bin/bash" > $logfile
echo "## !!! Важная иноформация !!!" >> $logfile
echo "## Этот файл был создан в результате выполнения скрипта для переименования файлов в уникальное навсегда для этого файла имя." >> $logfile
echo "## Для того, чтобы отменить преименования, просто запустите этот сценарий." >> $logfile
echo "## Чтобы его запустить, нужна минимальная Линукс-подготовка, но если её нет," >> $logfile
echo "## то просто запустите в терминале каждую строчку этого файла по очереди" >> $logfile
echo "## или запустите данный файл из терминала. Типа [ bash renamed_files.log ]" >> $logfile
echo "## В любом случае (даже если Вы конченный дебил) тут содержатся имена оригинальных и переименованных файлов и флаг вам всем в очумелые ручки" >> $logfile
filelist=$*
for filename in $filelist ; do
change_str=( `stat -c %y $filename` ) ## время последней модификации файла в виде 2015-06-27 16:07:54.243461522 +0300
change_str=${change_str[0]}"-"${change_str[1]} ## объединяем два первых параметра (отсчет с нуля)
change_str=${change_str//:/\^} ## заменяем : на ^
newname=$change_str
extension=${filename##*\.} ## получаем расширение после последней точки (если она есть)
if [ ${#extension} -ge ${#filename} ] ; then
extension="" ## если точки нет, то нет и расширения
else
extension="."$extension ## иначе добавляем перед расширением точку
fi
newname=$newname$extension
echo $filename " переименован в " $newname
echo "mv $newname $filename" >> $logfile
## !!!!!!!!!! следующую строчку в реально работающем скрипте нужно раскомментить
#mv $filename $newname
## !!!!!!!!!!
done
echo " "
echo " "
echo " переименование файлов закончено"
echo " ============================================"
echo "для того, чтобы отменить преименования, откройте log-файл (а по сути готовый скрипт) "$logfile ", для чего необходимо минимальное знание Линукса, и прочтите хрень, которая внутри его содержится"
echo " ----- C уважением, Ваш Допплер -----"
exit
=== end оf file
Две бессонных недели - и сегодня посетило озарение. Элегантный скрипт, которым я уже переименовал в своем компе все, что только можно (шутка).
Очень горжусь. На шестом десятке осовить новую ось, новый язык и сваять нечто реально работающее (аналогов, кстати, не нашел) - это пять с плюсом. Впрочем, в своё время аналогичная моя программулина под вынь под названием now тоже шороху наделала.
Если нужен реально работающий скрипт, то строчку №46 надо раскомментить. Кому нужен исходник не в виде фотки, а текстом - то вот (но строчку 46 надо-таки раскоментить)
== begin file
#!/bin/bash
E_BADARGS=65 ## Это просто номер ошибки для выхода без параметров - понты
logfile="renamed_files.log"
if [ ! -n "$1" ]; then
echo "Для переименования необходимо указать имя одного или нескольких файлов или их маску : `basename $0` file1 file2 (*.jpg *.png *.txt)"
exit $E_BADARGS
fi
echo "#!/bin/bash" > $logfile
echo "## !!! Важная иноформация !!!" >> $logfile
echo "## Этот файл был создан в результате выполнения скрипта для переименования файлов в уникальное навсегда для этого файла имя." >> $logfile
echo "## Для того, чтобы отменить преименования, просто запустите этот сценарий." >> $logfile
echo "## Чтобы его запустить, нужна минимальная Линукс-подготовка, но если её нет," >> $logfile
echo "## то просто запустите в терминале каждую строчку этого файла по очереди" >> $logfile
echo "## или запустите данный файл из терминала. Типа [ bash renamed_files.log ]" >> $logfile
echo "## В любом случае (даже если Вы конченный дебил) тут содержатся имена оригинальных и переименованных файлов и флаг вам всем в очумелые ручки" >> $logfile
filelist=$*
for filename in $filelist ; do
change_str=( `stat -c %y $filename` ) ## время последней модификации файла в виде 2015-06-27 16:07:54.243461522 +0300
change_str=${change_str[0]}"-"${change_str[1]} ## объединяем два первых параметра (отсчет с нуля)
change_str=${change_str//:/\^} ## заменяем : на ^
newname=$change_str
extension=${filename##*\.} ## получаем расширение после последней точки (если она есть)
if [ ${#extension} -ge ${#filename} ] ; then
extension="" ## если точки нет, то нет и расширения
else
extension="."$extension ## иначе добавляем перед расширением точку
fi
newname=$newname$extension
echo $filename " переименован в " $newname
echo "mv $newname $filename" >> $logfile
## !!!!!!!!!! следующую строчку в реально работающем скрипте нужно раскомментить
#mv $filename $newname
## !!!!!!!!!!
done
echo " "
echo " "
echo " переименование файлов закончено"
echo " ============================================"
echo "для того, чтобы отменить преименования, откройте log-файл (а по сути готовый скрипт) "$logfile ", для чего необходимо минимальное знание Линукса, и прочтите хрень, которая внутри его содержится"
echo " ----- C уважением, Ваш Допплер -----"
exit
=== end оf file
11
Коментарі
Floresco
126.06.15, 22:52
бля, ну точно...(с)
Хайдер
226.06.15, 22:52
Баш? )
Тоже кое-что писал на нем. Но это не совсем язык. Скорее система команд для линукс.
Гість: сонный
326.06.15, 22:54
блин я только тотал вар переделывать могу
Гість: _ _vs-
426.06.15, 23:02
ну всё, теперь ты настоящий программист)
Гість: Shpilli Willi
526.06.15, 23:03
талантливый чел талантлив во всем
Scabies
626.06.15, 23:07Відповідь на 4 від Гість: _ _vs-
Почему вдруг?
НеЖриМоэСало5
726.06.15, 23:09
десь мають час люди хуйньою страдати, ату жопа в маслі.....
Гість: Г-н ГлавГений
826.06.15, 23:09Відповідь на 3 від Гість: сонный
это уже самодостаточно и гениально
Гість: Г-н ГлавГений
926.06.15, 23:10Відповідь на 7 від НеЖриМоэСало5
от то є так, дійсно
НеЖриМоэСало5
1026.06.15, 23:13Відповідь на 9 від Гість: Г-н ГлавГений
Гай Хітлер!!!