imho.ws
IMHO.WS  

Вернуться   IMHO.WS > Программы и Операционные системы > Пингвинятник (ОС *NIX)
Опции темы
Старый 05.09.2007, 23:16     # 1
Pinky
Медленный газ
 
Аватар для Pinky
 
Регистрация: 30.10.2004
Пол: Male
Сообщения: 383

Pinky МолодецPinky МолодецPinky Молодец
помогите со скриптом

Есть необходимость часто на определённых файах запускать одну и ту же команду.Например перекодировать субтитры из utf8 в ср1251 или нечто подобное.Как можно указать использование либо маски файла либо самого файла?Т.е когда я на нём нажимаю правой кнопкой и указываю,что запустит с помощью данного скрипта.

добавлено через 4 минуты
И ещё такой вопрос: допустим скрипт создаёт файл с именем х,но если такой файл еть,то он его банально перепишет,а как сделать,чтобы переименовал в х_1(2,3 и т.д) ?
__________________
Oh quam sancta,quam serena,quam benigna,quam amoena.
Oh castitatis lilium....
Pinky вне форума  
Старый 06.09.2007, 02:00     # 2
Zes
Member
 
Аватар для Zes
 
Регистрация: 26.05.2004
Адрес: Планета обезьян
Сообщения: 348

Zes Популярный человек на этом форумеZes Популярный человек на этом форумеZes Популярный человек на этом форумеZes Популярный человек на этом форумеZes Популярный человек на этом форумеZes Популярный человек на этом форумеZes Популярный человек на этом форуме
Цитата:
Сообщение от Pinky Посмотреть сообщение
Есть необходимость часто на определённых файах запускать одну и ту же команду.Например перекодировать субтитры из utf8 в ср1251 или нечто подобное.Как можно указать использование либо маски файла либо самого файла?Т.е когда я на нём нажимаю правой кнопкой и указываю,что запустит с помощью данного скрипта.
не совсем понятно,что имеется ввиду,но скорее всего передаёшь имя файла в скрипт как параметер ($1,$2 и.т.д).

Т.е скрипт зовётся "вася.sh", запускается как "вася петя",где "петя" - $1 внутри скрипта.


Цитата:
Сообщение от Pinky Посмотреть сообщение
И ещё такой вопрос: допустим скрипт создаёт файл с именем х,но если такой файл еть,то он его банально перепишет,а как сделать,чтобы переименовал в х_1(2,3 и т.д) ?
FILENAME="/x/y/z"

if [ -f $FILENAME ]
then
FILENAME="$FILENAME"_1
else ...
fi
__________________
Beware of programmers carrying screwdrivers...

Последний раз редактировалось Zes; 06.09.2007 в 02:09.
Zes вне форума  
Старый 06.09.2007, 10:05     # 3
Pinky
Медленный газ
 
Аватар для Pinky
 
Регистрация: 30.10.2004
Пол: Male
Сообщения: 383

Pinky МолодецPinky МолодецPinky Молодец
Цитата:
Сообщение от Zes Посмотреть сообщение
не совсем понятно,что имеется ввиду
У меня есть около 100 файлов с субтитрами в кодировке utf8,а мне надо их перевести в cp1251.Просто надоело руками каждый файл переделывать,вот и хочу запустить команду на все файлы.
__________________
Oh quam sancta,quam serena,quam benigna,quam amoena.
Oh castitatis lilium....
Pinky вне форума  
Старый 06.09.2007, 10:57     # 4
Drakosha
Full Member
 
Аватар для Drakosha
 
Регистрация: 16.10.2002
Адрес: ArchLinux, Internet
Сообщения: 557

Drakosha Реально крут(а)Drakosha Реально крут(а)Drakosha Реально крут(а)Drakosha Реально крут(а)
Код:
for f in *.srt; do run "$f" "$f.new"; done
run замени на свою команду, *.srt тоже поменяй если надо.
Drakosha вне форума  
Старый 06.09.2007, 11:09     # 5
Zes
Member
 
Аватар для Zes
 
Регистрация: 26.05.2004
Адрес: Планета обезьян
Сообщения: 348

Zes Популярный человек на этом форумеZes Популярный человек на этом форумеZes Популярный человек на этом форумеZes Популярный человек на этом форумеZes Популярный человек на этом форумеZes Популярный человек на этом форумеZes Популярный человек на этом форуме
Цитата:
Сообщение от Pinky Посмотреть сообщение
У меня есть около 100 файлов с субтитрами в кодировке utf8,а мне надо их перевести в cp1251.Просто надоело руками каждый файл переделывать,вот и хочу запустить команду на все файлы.
Ну если имена файлов можно занести во временный список для скрипта,то несложно -
например,если они сидят в одной директории /х или если их названия одинаково начинаются,
например тогда х* будет обозначать все файлы с названием,начинающемся на "х". А потом в скрипте
запускаешь "for x in y":


LIST=$(ls)

for name in $(cat "$LIST")
do
command $name
if [ $? -eq 0]
then
echo "command succeded on $name \n"
else
echo "command failed on $name \n"
fi
done

Вот ,кстати,неплохой референс на скрипты под башем
__________________
Beware of programmers carrying screwdrivers...
Zes вне форума  
Старый 11.09.2007, 13:21     # 6
Hubbitus
мод
IMHO Кодер-200(6,7,8)
 
Регистрация: 29.03.2003
Адрес: Saint-Petersburg, Russia
Пол: Male
Сообщения: 2 734

Hubbitus Бог с наворотамиHubbitus Бог с наворотами
Hubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотами
Удобнее это делать с помощью find (он понимает значительно больше условий для отбора нужных файлов) пример для удаления http://www.imho.ws/showthread.php?t=122932 соответственно впихнуть в аргумент -exec другую команду и все.
__________________
Я делаю Линукс! Присоединяйтесь к свободным людям!

Связаться со мной всегда можно по джабберу: Hubbitus@jabber.ru
Pahan-Hubbitus.
Hubbitus вне форума  

Опции темы

Ваши права в разделе
Вы НЕ можете создавать новые темы
Вы не можете отвечать в темах.
Вы НЕ можете прикреплять вложения
Вы НЕ можете редактировать свои сообщения

BB код Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Часовой пояс GMT +4, время: 15:02.




Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.