Страница 1 из 1

Переименование в текущую дату (rename to data name)

Добавлено: 03 фев 2017, 12:32
Dja
Взято отсюда

Код: Выделить всё

#!/bin/bash

DIR_IN="input"
DIR_OUT="output"

if [ ! -d "$DIR_IN" -o ! -d "$DIR_OUT" ]
then
exit 1
fi

find "$DIR_IN" -mindepth 1 -type f | while read FILE
do
FILE_NAME=$(basename "$FILE")
unset FILE_SUFFIX
if [[ "$FILE_NAME" == *.* ]]
then
FILE_SUFFIX=".${FILE_NAME##*.}"
fi
mv "$FILE" "$DIR_OUT/$(date --date="$(stat --printf=%y "$FILE")" +%d-%m-%Y)$FILE_SUFFIX"
done
Для переименования с временной меткой mv "$FILE" "$DIR_OUT/$(date --date="$(stat --printf=%y "$FILE")" +%H:%M_%d-%m-%Y)$FILE_SUFFIX"

Переименование в текущую дату (rename to data name)

Добавлено: 03 фев 2017, 12:50
zuzabrik
во первых смущает как он будет работать со скрытыми файлами (*.* шаблон вроде и их включает)
во вторых раз уж есть операция добавления даты, хотелось бы и скрипт обратного преобразования. из файла+дата к файлу :-D

Переименование в текущую дату (rename to data name)

Добавлено: 03 фев 2017, 12:51
Chocobo
Переименование чего в текущую дату? :acute: :joke:

Переименование в текущую дату (rename to data name)

Добавлено: 03 фев 2017, 12:53
Dja
Chocobo, имени файла конечно :-D
zuzabrik, переименовывание того файла, который надо переименовать. Как правило это логи или бэкапы. А эти файлы видимы. Невидимый файл туда случайно не попадет. Если не нужна дата, а нужен файл - то просто не переименовываешь.

Переименование в текущую дату (rename to data name)

Добавлено: 03 фев 2017, 13:00
Chocobo
Ты ж любишь везде конкретику :blink: - вот и тут стоило бы расписать, что это переименование - является переносом файлов из папки ./input в папку ./output с попутным изменением имени на дата+имяфайла

P.S. input / output лучше бы ключами запуска передавать, как и возможность выбора между дата и датавремя

Переименование в текущую дату (rename to data name)

Добавлено: 03 фев 2017, 13:35
zuzabrik
Dja писал(а): переименовывание того файла, который надо переименовать. Как правило это логи или бэкапы. А эти файлы видимы. Невидимый файл туда случайно не попадет. Если не нужна дата, а нужен файл - то просто не переименовываешь.
Я бы посоветовал просто архивировать логи или бекапы и давать дату архиву, а не файлам. Потому и спросил про обратное переименование. Очень интересно просто как забекапив таким образом например папку doc с сотней документов в нем ты распакуешь их обратно. будешь у каждого файла вручную убирать дату создания архива? :-D Или не дай бог архивировать так системные папки, типа /etc :-D

Уж лучше нечто типа такого. Создает из содержимого заданых папок архив с датой. Распаковать его обратно не сложно, а вот переименовать обратно все файлы чтобы вернуть в систему, задачка не такая тривиальная. Особенно если файлы в своем названии уже содержали дату до вставки текущей даты.

Код: Выделить всё

#!/bin/bash

FILES="bin  Видео  Документы  Загрузки  Изображения  Музыка  Общедоступные  Шаблоны"

cd ..
tar -czvf ./backup/backup_$(date +%Y-%m-%d_%H-%M-%S).tar.gz $FILES

Переименование в текущую дату (rename to data name)

Добавлено: 03 фев 2017, 15:53
colonel
Dja писал(а):... переименовывание того файла, который надо переименовать....
zuzabrik писал(а): Я бы посоветовал просто архивировать логи или бекапы и давать дату архиву, а не файлам

файлы ...фуяйллы папки ... архивы ... :dash2:

Понятно что лучше конечн архивом бекапить и добавить в имя архивируемого файла или папки дату\время нет проблем
zuzabrik писал(а): во вторых раз уж есть операция добавления даты, хотелось бы и скрипт обратного преобразования. из файла+дата к файлу
а вот это ужо точно засада :-D

но коль вопрос стоит - "переименовывание того файла, который надо переименовать"
то ,..
собсно вот скриптик -
rename-data.sh.zip
(535 байт) 49 скачиваний
вставить в него и другой формат даты-времени ( и если надо то и архивирование добавить и тд. итп ) , не должно составить труда.
а так... если его в скрипты ФМ зафигачить
то ПКМ по выбранному файлу в Контекстном меню -> Сценарии -> (ентот скриптик ) и ...
выделенный(выбранный кликом при ПКМ) файлик или папка будут переименованы добавлением текущего даты-времени перед собсно именем файла.
ну и там истчшо сообщение должоно выскочить о проведённом переименовании.
И если дальше извращаться , то можно подумать и как сделать чтоб кучей переименовывать ... в каталоге или несколько выделенных ...
конечно это не полное переименование имени в дату(как было говорено в начале темы), зато нет проблем с обратным преобразованием и поиском имени которое было до переименования в дату.

Переименование в текущую дату (rename to data name)

Добавлено: 03 фев 2017, 15:55
Dja
zuzabrik, логи обзываются чтоб опубликоваться.

Переименование в текущую дату (rename to data name)

Добавлено: 03 фев 2017, 20:53
zuzabrik
Dja писал(а): логи обзываются чтоб опубликоваться.
Так и пиши. Мой куратор из ФСБ просит логи из чата IRC в формате с датой лога. Или ты все это не для своего бота в канале ирки делаешь? :-D

Переименование в текущую дату (rename to data name)

Добавлено: 03 фев 2017, 20:56
Dja
zuzabrik, я уже сделал. Просто делюсь. Мало ли кому пригодится.

Переименование в текущую дату (rename to data name)

Добавлено: 03 фев 2017, 21:21
Dja
Во избежание дальнейших недопониманий вот видео
https://vimeo.com/202424042