The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Индекс форумов
Составление сообщения

Исходное сообщение
"Как выделить три последних символа имени файла?"
Отправлено Name, 23-Май-11 17:59 
>[оверквотинг удален]
>> for file in /dir/*; do mv ${file} ${file%...}; done
>> Пример.
>> mkdir ~/dir
>> touch ~/dir/some\ file
>> for file in ~/dir/*; do mv ${file} ${file}.new; done
>> for file in ~/dir/*; do mv ${file} ${file%.???}; done
> 1) на сколько я понял, сложность была в том, чтобы вставить суффикс
> между именем файла и расширением файла, а не просто дописать в
> конец, то есть чтобы расширение файла не поменялось
> 2) использование ${file} приведёт к ошибке для файлов, содержащих пробел, нужно "${file}"

Пример.
mkdir ~/dir
touch ~/dir/some\ file
touch ~/dir/some\ file.extension
cd ~/dir
export addword=".new"
for file in *; do
case ${file##*.} in
${file}) echo "file not have extension";;
*)  mv -v ${file} ${file%.*}${addword}.${file##*.};;
esac;
done

for file in *; do
case ${file##*.} in
${file}) echo "file not have extension";;
*)  mv -v ${file} ${file%${addword}.*}.${file##*.};;
esac;
done

Спасибо за замечание, невнимателен. Сложностей здесь нет, достаточно использовать "Parameter Expansion".
>использование ${file} приведёт к ошибке для файлов, содержащих пробел, нужно "${file}"

Прошу внимательней посмотреть на пример, some\ file содержит пробел. В использвуемой конструкции экранирование не требуется.
Пример.
file=file\ name\ with\ blank
touch ${file}
mv -v ${file} ${file}.new
«file name with blank» -> «file name with blank.new»

Примечание.
В скрипте, можно предусмотреть как необходимо обрабатывать файлы без расширений (показано в примере).
И как следует поступать с определёнными расширениями, например, file.tar.gz

 

Ваше сообщение
Имя*:
EMail:
Для отправки новых сообщений в текущей нити на email укажите знак ! перед адресом, например, !user@host.ru (!! - не показывать email).
Более тонкая настройка отправки ответов производится в профиле зарегистрированного участника форума.
Заголовок*:
Сообщение*:
 
При общении не допускается: неуважительное отношение к собеседнику, хамство, унизительное обращение, ненормативная лексика, переход на личности, агрессивное поведение, обесценивание собеседника, провоцирование флейма голословными и заведомо ложными заявлениями. Не отвечайте на сообщения, явно нарушающие правила - удаляются не только сами нарушения, но и все ответы на них. Лог модерирования.



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру