Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Bash: распаковка в цикле одной строкой

251
09 марта 2008 года
SkyMаn
1.7K / / 31.07.2007
Есть несколько bz2-файлов.
Требуется:
просто распаковать их (tar -jxvf * не пашет)
Думал подключить find и/или grep, но не понял, как.
Где можно почитать именно об этом? В справочнике по башу? Какой бы посоветовали, а то их немало.

Общая задача - распаковать архивы и сделать их deb-пакетами.
Кстати, в каком файле надо добавить строки типа VARIABLE=VALUE, чтобы они постоянно объявлялись при начала сессии юзверя (помнится, что какой-то из хомяковой директории, но ничего особого не нашел)
Кстати, есть гуевское приложение для создания deb-пакетов?
245
09 марта 2008 года
~ArchimeD~
1.4K / / 24.07.2006
Цитата: SkyMаn
Есть несколько bz2-файлов.
Требуется:
просто распаковать их (tar -jxvf * не пашет)
Думал подключить find и/или grep, но не понял, как.
Где можно почитать именно об этом? В справочнике по башу? Какой бы посоветовали, а то их немало.



может пойдет
tar -jxvf `ls *.bz2`
?

251
09 марта 2008 года
SkyMаn
1.7K / / 31.07.2007
Неа, не подошло. И с прямыми кавычками - тоже.
245
09 марта 2008 года
~ArchimeD~
1.4K / / 24.07.2006
Цитата: SkyMаn
Неа, не подошло. И с прямыми кавычками - тоже.



прямые кавычки - это кавычки, а обратные - это получение вывода команды.

понял в чем прикол - tar не приемлет несколько архивов в качестве параметра. как обойтись - подумаю, отпишусь.

2
09 марта 2008 года
squirL
5.6K / / 13.08.2003
вариант 1:
 
Код:
$ for FILE in `ls *.bz2`; do tar -jxvf $FILE; done

вариант 2:
 
Код:
$ find ./ -name *.bz2 -exec tar -jxvf {} \;
274
09 марта 2008 года
Lone Wolf
1.3K / / 26.11.2006
 
Код:
for file in *.tar.bz2; do tar -xvjf $file; done


ты быстрее оказался.
надо страницы обновлять если они ьолее 5минут открыты, перед тем как постить.
274
09 марта 2008 года
Lone Wolf
1.3K / / 26.11.2006
можно и спрошу в этой теме? а то как-то неохота еще одну плодить, хоть конечно вопрос мало связан с этим.

У меня есть n-файлов мназванием xxxxxNN.xx NN - это номер например от 01 до 26.
мне надо эти файлы переименовать в yyyyNN.yy
как это сделать одной командой?
245
09 марта 2008 года
~ArchimeD~
1.4K / / 24.07.2006
Цитата: squirL
вариант 1:
 
Код:
$ for FILE in `ls *.bz2`; do tar -jxvf $FILE; done

вариант 2:
 
Код:
$ find ./ -name *.bz2 -exec tar -jxvf {} \;



йолки! все гораздо проще :) а я, сделал через хитро закрученную ж**у :D:

 
Код:
bash -c "`ls *.bz2 | awk '{print "tar -jxvf " $1}'`"
2
09 марта 2008 года
squirL
5.6K / / 13.08.2003
я скрипты на shell & perl каждый день пишу :) кстати, у вас то оно работает? у меня tar на Kubuntu почему то отказывается распаковывать bzip'ы =\\

Цитата:

У меня есть n-файлов мназванием xxxxxNN.xx NN - это номер например от 01 до 26.
мне надо эти файлы переименовать в yyyyNN.yy


уточни плиз, yyyy и xxxx - это у тебя одинаковые буквы все время?

типа файл:
ааааа01.аа?

274
09 марта 2008 года
Lone Wolf
1.3K / / 26.11.2006
нет, это одинаковая последовательность букв. например, [Eclipse]Claymore01.ass, [Eclipse]Claymore02.ass ... а мне надо получить Claynore - 01.ass Claymore - 02.ass ... и так далее.
245
09 марта 2008 года
~ArchimeD~
1.4K / / 24.07.2006
[QUOTE=SkyMаn]
Кстати, в каком файле надо добавить строки типа VARIABLE=VALUE, чтобы они постоянно объявлялись при начала сессии юзверя (помнится, что какой-то из хомяковой директории, но ничего особого не нашел)
[/QUOTE]

кстати, это часом не ~/.bashrc?
251
10 марта 2008 года
SkyMаn
1.7K / / 31.07.2007
Ого... наотвечали сколько. Всем огромнейшее спасибо!
На счет рабочести, то не работает только твой, squirL, вариант №2 (№1 - рабочий). Говорит, мол, "find: paths must precede expression"
Варианты всех остальных работают на ура и понятны мне. Не совсем допер логику и алгоритм работы последнего варианта ~ArchimeD~'а (тот, что с awk). Какая роль awk?
И какое пособие посоветовали бы вы (может, по котором учились сами) по башу. Кстати, а разве баша не хватает, что надо юзать еще и перл? И можно ли вместо перла сделать замену на php (коммандная строка)?
И наконец. Я тоже думал, о ~/.bashrc, проверю сегодня. Но это помойму тогда, когда ты входишь в терминал, а хотелось бы, чтобы действовало не только для терминальный сессий, но и для гуевых. Или это влияет глобально?
2
10 марта 2008 года
squirL
5.6K / / 13.08.2003
странно. попробуй вместо ./ абсолютный путь указать
руководство - http://www.opennet.ru/docs/RUS/bash_scripting_guide/
245
10 марта 2008 года
~ArchimeD~
1.4K / / 24.07.2006
Цитата: SkyMаn

И наконец. Я тоже думал, о ~/.bashrc, проверю сегодня. Но это помойму тогда, когда ты входишь в терминал, а хотелось бы, чтобы действовало не только для терминальный сессий, но и для гуевых. Или это влияет глобально?


во фряхе еще есть /etc/login.conf и ~/.login_conf где можно прописать setenv. правда, не уверен, что в твоем случае оно подойдет

Цитата: SkyMаn
Не совсем допер логику и алгоритм работы последнего варианта ~ArchimeD~'а (тот, что с awk). Какая роль awk?



AWK:

Цитата:
AWK — интерпретируемый скриптовый C-подобный язык построчного разбора и обработки входного потока (например, текстового файла) по заданным шаблонам.


в моем случае, он просто вставляет перед аргументом (file.bz2) строку "tar -jxvf " и затем все это в качестве параметра передается bash на выполнение

251
10 марта 2008 года
SkyMаn
1.7K / / 31.07.2007
Спасибо. Пошел читать руководство.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог