Форум русскоязычного сообщества Ubuntu


Считаете, что Ubuntu недостаточно дружелюбна к новичкам?
Помогите создать новое Руководство для новичков!

Автор Тема: ls и grep - непонятки  (Прочитано 3443 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн alexander.pronin

  • Старожил
  • *
  • Сообщений: 2539
    • Просмотр профиля
Re: ls и grep - непонятки
« Ответ #15 : 15 Июля 2010, 08:17:39 »
find
grep
sed
Это надо знать, жить становится с ними легко :coolsmiley:.

Оффлайн madaxus

  • Новичок
  • *
  • Сообщений: 34
    • Просмотр профиля
Re: ls и grep - непонятки
« Ответ #16 : 15 Июля 2010, 09:21:11 »
Попробовал grep *.jpg в папке с одним файлом - действительно работает. А если больше одного, уже нет.
Не работает, т.к. при нескольких jpg файлах фактически исполняется командаgrep 1.jpg 2.jpg 3.jpgВ результате grep ищет строку, содержащую "1.jpg 2.jpg 3.jpg ".
В свою очередь ls то же не лыком шит. Он проверяет, куда направлен его вывод. И ведёт себя по разному.
- Если вывод направлен на терминал, то выводится несколько столбцов с раскраской.
- Если вывод направлен в канал ( " | " ), то имена файлов выводятся в один столбец.
"Канальный" вывод можно посмотреть так:ls|catПолучается, что grep имеет на входе такой текст:1.jpg
2.jpg
3.jpg
Напомню, что grep отображает строки, содержащие искомое выражение ( "1.jpg 2.jpg 3.jpg " ). Тут таких строк нет.

Оффлайн dimas000

  • Старожил
  • *
  • Сообщений: 1437
  • Ubuntu 9.10 @ 2.6.34
    • Просмотр профиля
Re: ls и grep - непонятки
« Ответ #17 : 15 Июля 2010, 18:51:29 »
Цитировать
В свою очередь ls то же не лыком шит. Он проверяет, куда направлен его вывод. И ведёт себя по разному.
- Если вывод направлен на терминал, то выводится несколько столбцов с раскраской.
- Если вывод направлен в канал ( " | " ), то имена файлов выводятся в один столбец.
как интересно... и правда ведь, она умнее, чем кажется... вот так постигаешь, что-то узнаешь, а потом оказывается, что еще дофига всего не знаешь даже в элементарных вещах. Линукс бесконечен)))
лучше на "ты"

Оффлайн alexander.pronin

  • Старожил
  • *
  • Сообщений: 2539
    • Просмотр профиля
Re: ls и grep - непонятки
« Ответ #18 : 16 Июля 2010, 08:18:09 »
Удивлю Вас еще больше.
Пусть есть такие связки.
1. find ... | grep ...
2. find ... | xargs grep ...
В 1 случае grep будет искать соответствие в названиях найденных файлов.
Во 2 случае grep будет искать соответствие в содержимом найденных файлов.
ЗЫ. или ls вместо find можно поставить.
ЗЫ2. При работе с содержимым файлов рекомендую использовать find или locate, а не ls.
Причина в том, что ls не дает полных путей к файлам и могут быть неожиданные заморочки.
А оно нам надо ?(ц)
« Последнее редактирование: 16 Июля 2010, 08:42:36 от alexander.pronin »

Оффлайн Lion-Simba

  • Старожил
  • *
  • Сообщений: 1126
    • Просмотр профиля
Re: ls и grep - непонятки
« Ответ #19 : 16 Июля 2010, 12:36:33 »
2. find ... | xargs grep ...
Красиво. :)
Оказываю индивидуальную платную техподдержку широкого профиля. Обращаться в ЛС или Jabber.

Оффлайн alexander.pronin

  • Старожил
  • *
  • Сообщений: 2539
    • Просмотр профиля
Re: ls и grep - непонятки
« Ответ #20 : 16 Июля 2010, 13:04:41 »
О grep
Как много в этом слове
Для юникс-юзера слилось.
« Последнее редактирование: 19 Июля 2010, 08:40:22 от alexander.pronin »

Оффлайн Jack Sparrow

  • Активист
  • *
  • Сообщений: 630
    • Просмотр профиля
Re: ls и grep - непонятки
« Ответ #21 : 16 Июля 2010, 20:43:06 »
Цитировать
Удивлю Вас еще больше.
Пусть есть такие связки.
1. find ... | grep ...
2. find ... | xargs grep ...
В 1 случае grep будет искать соответствие в названиях найденных файлов.
Во 2 случае grep будет искать соответствие в содержимом найденных файлов.
Попробовал такую комбинацию:
$ cd /etc
$ find fstab > ~/Desktop/fstab   # здесь выдает  fstab
$ find | grep fstab > ~/Desktop/grep_fstab   # здесь выдает ./fstab
$ find | xargs grep fstab > ~/Desktop/xargs_fstab   # здесь выдает строчки внутри файлов, содержащие fstab
Мда, век живи - век учись.
Linux is only free if your time has no value (c) Jamie Zawinski

 

Страница сгенерирована за 0.025 секунд. Запросов: 19.