Поиск и переименование файлов в Linux

компьютеры Linux скрипт bash файловая система

Есть две схожие задачи:

1. как одной строкой найти файлы имеющие только расширение т.е. типа ".extension" и переименовать их в "extension"?
было: /var/ftp/dir/.extension
должно стать: /var/ftp/dir/.extension

2. то же самое имеющее пробелы в начале имени файла типа " filename.exe" и переименовать в "filename.exe"
было: /var/ftp/dir/ filename.exe
должно стать: /var/ftp/dir/filename.exe

Разрешено использовать только стандартные функции SHELL при написании скрипта.

Примечание:
Поправка. Первом примере должно получиться имя без точки в начале. "/var/ftp/dir/extension"

>hugo
1. Не отлавливает имена типа ".Скиньте чего нить"
2. Скрипт вешается на имени файла " fffff.exe"

>Afalin
Скрипт не отлавливает имена ".Скиньте чего нить" даже после добавления русских символов и пробелов
for i in `find /var/ftp/VIDEO/ -type f -regex '.*\/\.[a-zA-Z0-9а-яА-Я ]*'`; do mv -f $i `echo $i | sed 's/\(.*\/\)\.\([a-zA-Z0-9а-яА-Я ]*\)/\1\2/'` ; done

Примечание:
>WebCumo
я вот подумал... сталкивался с проблемкой в php... сам скрипт - в utf, апач крутился скорее всего в cp1251 в общем для полноценного понимания русских символов пришлось раширять регу до [А-ЯР-Юр-юа-я]... мб у тебя подобная фигня?
Все работает на KOI8-R. А для UTF имеется директива /u. использовать символьные наборы бессмыслено. проще указывать все печатаемые символы.
Ответы:
1.
$ for i in `find /var/ftp/dir/ -type f -iname '.extension'`; do mv $i `echo $i|tr -d '.'`; done
1. for i in `find /var/ftp/dir -type f -regex '.*\/\.[a-zA-Z0-9]*'`; do mv -f $i `echo $i | sed 's/\(.*\/\)\.\([a-zA-Z0-9]*\)/\1\2/'` ; done
Регэксп на filename'ы поставил простой, если что - недолго усложнить.
я вот подумал...
сталкивался с проблемкой в php... сам скрипт - в utf, апач крутился скорее всего в cp1251
в общем для полноценного понимания русских символов пришлось раширять регу до [А-ЯР-Юр-юа-я]... мб у тебя подобная фигня?


15 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.