Подтвердить что ты не робот

Добавить дату в имя файла в linux

Я хочу добавить дату рядом с именем файла ( "somefile.txt" ). Например: somefile_25-11-2009.txt или somefile_25Nov2009.txt или что-нибудь в этом роде

Возможно, будет script или какая-либо команда в окне терминала. Я использую Linux (Ubuntu).

Спасибо заранее.

О, я почти забыл добавить, что script или команда должна обновлять имя файла до новой даты каждый раз, когда вы хотите сохранить файл в определенной папке, но сохраняя предыдущие файлы. Таким образом, в папке будут файлы вроде этого: filename_18Oct2009.txt, filename_9Nov2009.txt, filename_23Nov2009.txt

4b9b3361

Ответ 1

Здесь есть две проблемы.

1. Получить дату в виде строки

Это довольно легко. Просто используйте команду date с опцией +. Мы можем использовать backticks для захвата значения в переменной.

$ DATE=`date +%d-%m-%y` 

Вы можете изменить формат даты, используя различные параметры %, как описано на странице bash, которая позволяет нам сопоставлять шаблоны при изменении переменной:

$ NAME=${FILE%.*}
$ EXT=${FILE#*.} 

Объединяя их, мы получаем:

$ FILE=somefile.txt             
$ NAME=${FILE%.*}
$ EXT=${FILE#*.} 
$ DATE=`date +%d-%m-%y`         
$ NEWFILE=${NAME}_${DATE}.${EXT}
$ echo $NEWFILE                 
somefile_25-11-09.txt                         

И если нас меньше беспокоит читаемость, мы делаем всю работу в одной строке (с другим форматом даты):

$ FILE=somefile.txt  
$ FILE=${FILE%.*}_`date +%d%b%y`.${FILE#*.}
$ echo $FILE                                 
somefile_25Nov09.txt

Ответ 2

Вы можете использовать обратные ссылки.

$ echo "myfilename-"`date +"%d-%m-%Y"`

Урожайность:

myfilename-25-11-2009

Ответ 3

cp somefile somefile_`date +%d%b%Y`

Ответ 4

немного более сложное решение, которое полностью соответствует вашей спецификации

echo `expr $FILENAME : '\(.*\)\.[^.]*'`_`date +%d-%m-%y`.`expr $FILENAME : '.*\.\([^.]*\)'`

где first 'expr' извлекает имя файла без расширения, второе расширение expr расширяет