Использование grep с pipe в консоли [РЕШЕНО ЧАСТИЧНО]

Добрый день.

Задача: в папке лежат какие-то файлы, среди них набор файлов вида word01.zip, где вместо 01 стоят разные числа. Хочется с помощью unzip разархивировать их все, не делая это вручную, т.е. использовать ls | grep word | grep zip или конструкцию в этом роде. ls | grep word | grep zip | unzip почему-то не работает; буду благодарен за конкретную рекомендацию или хотя бы внятный мануал на тему.
Гугление всевозможных "using grep with pipe" не помогло.

Заранее спасибо.

0
Vlad_W_1999 - 30 Июнь, 2009 - 19:25

А если сказать unzip -Z word*.zip ? Что получается?

0
Soi-Fong - 30 Июнь, 2009 - 20:12
Изображение пользователя Soi-Fong.

for file in `ls | grep word`; do unzip $file; done

0
Reepicheep - 1 Июль, 2009 - 11:44

Vlad_W_1999
А если сказать unzip -Z word*.zip ? Что получается?
Выводят много строк вида "caution: filename not matched: word01.zip" про все файлы, которые соответствуют такой маске. Разархивирования при этом не происходит.

Soi-Fong
for file in `ls | grep word`; do unzip $file; done
Тоже не получается. Ответ такой:
unzip: cannot find or open ls, ls.zip or ls.ZIP.

upd:
помогло такое:
for file in word*.zip; do unzip $file; done
Но всё ещё непонятно, почему не работает ls в кавычках, и как получить с помощью масок bash такой же вывод, как от
ls | grep word | grep zip | grep -v letter

0
Soi-Fong - 1 Июль, 2009 - 17:05
Изображение пользователя Soi-Fong.

Странно, у меня вот такая команда нормально отработала:
$ for file in `ls | grep d`; do echo $file; done
downloads
sounds
video

ты кавычки правильные указывал? не вот такие ', а вот такие `, на букве ё?
или в данном случае аналогично следующее:
for file in $(ls | grep d); do echo $file; done

Под масками баша ты подразумеваешь так называемые wildcards? Боюсь для них это слишком сложный запрос, тут можно составить простое регулярное выражение для grep, все же лучше, чем 3 раза его вызывать.

0
urusha - 1 Июль, 2009 - 23:14
Изображение пользователя urusha.

man unzip все таки, в итоге:
unzip word\*.zip
различайте * в шеле, и экранированную * для прямой передачи на растерзание команды.

0
Vlad_W_1999 - 1 Июль, 2009 - 23:30

Вот оно! Благодарю за подсказку! У меня закралась нехорошая мысль, что звёздочка как-то не так интерпретируется.

Отправить комментарий

CAPTCHA на основе изображений
Введите цифры