LINUX.ORG.RU

Помогите гуманитарию написать скрипт...


0

0

Дано: директория с файлами
Требуется написать скрипт для пакетного переименования файлов по схеме
????????.???->FILE-YYMMDD-HHMMSS.???
где YYMMDD, HHMMSS генерируются исходя из времени последней модификации файла...
Буду признателен за помощь

anonymous

Re: Помогите гуманитарию написать скрипт...

Это, пожалуй, задача начального уровня. Самого разнаиначальнейшего. Если решишь ее сам, почувствуешь, каково оно.

anonymous ()

Re: Помогите гуманитарию написать скрипт...

Расскажи зачем тебе это нужно, если это не большая гуманитарная тайна.

anonymous ()

Re: Помогите гуманитарию написать скрипт...

google://advanced bash scripting howto

TuxR ★★★★ ()

Re: Помогите гуманитарию написать скрипт...

При условии, что в названиях файлов нет как минимум табов

IFS=$'\n';
for f in `find -type f -printf '%p\tFILE-%Ty%Tm%Td-%TH%TM%TS\n'`; do 
 mv "`cut -f 1 <<< "$f"`" \
    "`sed 's,/\([^/]*\(\.[^/.]*\)\|[^/]*\)\t\(.*\),/\3\2,' <<< "$f"`";
done

Рекомендую сначала проверить, хотя бы заменив mv на echo.
Ещё рекомендую всё же прочитать "ссылку" TuxR.

Jini ★★ ()

Re: Помогите гуманитарию написать скрипт...

krename

anonymous ()

Re: Помогите гуманитарию написать скрипт...

Я не силен в скриптописании, но мне самому стала интересна эта задачка. Вот, что в результате получилось

# !/bin/bash
# Преобразование ????????.???->FILE-YYMMDD-HHMMSS.???

for f in "$PWD"/*
do
# Получаем сгенированное из даты имя
nn="FILE"-`date --reference="$f" +%Y%m%d`-`date --reference="$f" +%M%S`
# Получаем расширение файла
fe=`expr "$f" : ".*\([.][^./]*\)" \| " "`

mv "$f" "$nn$fe"
done

ysagat ()

Re: Помогите гуманитарию написать скрипт...

Пишите проще, у date можно все записать в одну строку форматирования

date --reference="$f" '+%Y%m%d-%M%S'`

А расширение файла определять так

fe=${f##*.}; mv "$f" "$nn.$fe"

mky ★★★★★ ()

Re: Помогите гуманитарию написать скрипт...

Спасибо за образцы... буду изучать и надеюсь внедрю в работу

anonymous ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.