IMHO.WS

IMHO.WS (https://www.imho.ws/index.php)
-   Пингвинятник (ОС *NIX) (https://www.imho.ws/forumdisplay.php?f=76)
-   -   помогите со скриптом (https://www.imho.ws/showthread.php?t=123308)

Pinky 05.09.2007 23:16

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

добавлено через 4 минуты
И ещё такой вопрос: допустим скрипт создаёт файл с именем х,но если такой файл еть,то он его банально перепишет,а как сделать,чтобы переименовал в х_1(2,3 и т.д) ?

Zes 06.09.2007 02:00

Цитата:

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

не совсем понятно,что имеется ввиду,но скорее всего передаёшь имя файла в скрипт как параметер ($1,$2 и.т.д).

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


Цитата:

Сообщение от Pinky (Сообщение 1455156)
И ещё такой вопрос: допустим скрипт создаёт файл с именем х,но если такой файл еть,то он его банально перепишет,а как сделать,чтобы переименовал в х_1(2,3 и т.д) ?

FILENAME="/x/y/z"

if [ -f $FILENAME ]
then
FILENAME="$FILENAME"_1
else ...
fi

Pinky 06.09.2007 10:05

Цитата:

Сообщение от Zes (Сообщение 1455214)
не совсем понятно,что имеется ввиду

У меня есть около 100 файлов с субтитрами в кодировке utf8,а мне надо их перевести в cp1251.Просто надоело руками каждый файл переделывать,вот и хочу запустить команду на все файлы.

Drakosha 06.09.2007 10:57

Код:

for f in *.srt; do run "$f" "$f.new"; done
run замени на свою команду, *.srt тоже поменяй если надо.

Zes 06.09.2007 11:09

Цитата:

Сообщение от Pinky (Сообщение 1455281)
У меня есть около 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

Вот ,кстати,неплохой референс на скрипты под башем

Hubbitus 11.09.2007 13:21

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


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

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