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


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

Автор Тема: Найти все файлы, НЕ содержащие строку.  (Прочитано 4405 раз)

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

Оффлайн AnrDaemon

  • Автор темы
  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 28511
    • Просмотр профиля
Люди... спасите. Голову сломал.

Задача:
Найти все файлы, *не* содержащие указанную строку.
Идея была прямая и недвусмысленная:
#! /bin/bash
find -name \*.lng -exec head -n 1 \{\} | grep -qv "^.Language=English" \; -print0
Только вот фига с два - "|" никак не удаётся заэкранировать...
Есть какие-то другие способы?
« Последнее редактирование: 13 Сентября 2010, 15:49:41 от Владимир Николаевич »
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

Прежде чем [Отправить], нажми [Просмотр] и прочти собственное сообщение. Сам-то понял, что написал?…

Оффлайн dieselist

  • Активист
  • *
  • Сообщений: 525
    • Просмотр профиля
    • diesel.pp.ua
Re: Найти все файлы, НЕ содержащие строку.
« Ответ #1 : 13 Сентября 2010, 15:53:11 »
find /path -exec grep -lv " your string" {} \;
не?

если не то - опиши условия точнее.
Ubuntu, Gentoo, RHEL, AIX

Оффлайн VestniK

  • Активист
  • *
  • Сообщений: 594
    • Просмотр профиля
Re: Найти все файлы, НЕ содержащие строку.
« Ответ #2 : 13 Сентября 2010, 15:54:02 »
Случаем не так?:
find . -name "*.lng" -exec grep --files-without-match {} \;

Оффлайн AnrDaemon

  • Автор темы
  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 28511
    • Просмотр профиля
Re: Найти все файлы, НЕ содержащие строку.
« Ответ #3 : 13 Сентября 2010, 15:57:16 »
Сами то пробовали?
Ваши варианты найдут ВСЕ файлы, даже те, в которых есть искомая строка. Потому что - там есть ДРУГИЕ строки... которые замечательно подпадают под правило -v "строка".

P.S.
Хотяя...
« Последнее редактирование: 13 Сентября 2010, 15:59:19 от AnrDaemon »
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

Прежде чем [Отправить], нажми [Просмотр] и прочти собственное сообщение. Сам-то понял, что написал?…

Оффлайн alexander.pronin

  • Старожил
  • *
  • Сообщений: 2539
    • Просмотр профиля
Re: Найти все файлы, НЕ содержащие строку.
« Ответ #4 : 13 Сентября 2010, 15:59:16 »
#! /bin/bash
find -name "*.lng" -exec grep -v  "^.Language=English" {}  \;
PS. Это навскидку.
« Последнее редактирование: 13 Сентября 2010, 16:04:05 от Владимир Николаевич »

Оффлайн AnrDaemon

  • Автор темы
  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 28511
    • Просмотр профиля
Re: Найти все файлы, НЕ содержащие строку.
« Ответ #5 : 13 Сентября 2010, 15:59:47 »
#! /bin/bash
find -name "*.lng" -exec grep -v {}  ;

Сам попробуй. Вот сейчас дистриб Far скачай и попробуй.

Пользователь решил продолжить мысль 13 Сентября 2010, 16:01:07:
Случаем не так?:
find . -name "*.lng" -exec grep --files-without-match {} \;

Так... возьми с полки пирожок :)
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

Прежде чем [Отправить], нажми [Просмотр] и прочти собственное сообщение. Сам-то понял, что написал?…

Оффлайн alexander.pronin

  • Старожил
  • *
  • Сообщений: 2539
    • Просмотр профиля
Re: Найти все файлы, НЕ содержащие строку.
« Ответ #6 : 13 Сентября 2010, 16:06:57 »
Вы взяли промежуточный вариант.
А зачем Far ?

Оффлайн AnrDaemon

  • Автор темы
  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 28511
    • Просмотр профиля
Re: Найти все файлы, НЕ содержащие строку.
« Ответ #7 : 13 Сентября 2010, 16:12:28 »
Эээ... Слегка соседняя задачка.
Можно как-то определить количество файлов в каталоге, попадающих под определённую маску, по быстрому?

Вы взяли промежуточный вариант.
А зачем Far ?

Затем, что я на нём эксперименты ставлю. Пакую на флешку, надо убить все неангельские lng и hlf файлы.
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

Прежде чем [Отправить], нажми [Просмотр] и прочти собственное сообщение. Сам-то понял, что написал?…

Оффлайн dieselist

  • Активист
  • *
  • Сообщений: 525
    • Просмотр профиля
    • diesel.pp.ua
Re: Найти все файлы, НЕ содержащие строку.
« Ответ #8 : 13 Сентября 2010, 16:14:05 »
Эээ... Слегка соседняя задачка.
Можно как-то определить количество файлов в каталоге, попадающих под определённую маску, по быстрому?

find /path -name "*.ext" | wc -l
Ubuntu, Gentoo, RHEL, AIX

Оффлайн AnrDaemon

  • Автор темы
  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 28511
    • Просмотр профиля
Re: Найти все файлы, НЕ содержащие строку.
« Ответ #9 : 13 Сентября 2010, 16:17:58 »
Neat... thanks.
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

Прежде чем [Отправить], нажми [Просмотр] и прочти собственное сообщение. Сам-то понял, что написал?…

Оффлайн VestniK

  • Активист
  • *
  • Сообщений: 594
    • Просмотр профиля
Re: Найти все файлы, НЕ содержащие строку.
« Ответ #10 : 13 Сентября 2010, 16:31:02 »
Сами то пробовали?
Ваши варианты найдут ВСЕ файлы, даже те, в которых есть искомая строка. Потому что - там есть ДРУГИЕ строки... которые замечательно подпадают под правило -v "строка".
Ты уж тогда задачу конкретизируй. Все файлы в которых нет заданной строки ищутся grep --file-without-match подробности в man grep если тебе что-то другое нужно, то объясни что именно. Каков вопрос таков ответ.

Оффлайн alexander.pronin

  • Старожил
  • *
  • Сообщений: 2539
    • Просмотр профиля
Re: Найти все файлы, НЕ содержащие строку.
« Ответ #11 : 13 Сентября 2010, 16:37:22 »
На любой вопрос даем любой ответ.(ц) ;D

Оффлайн AnrDaemon

  • Автор темы
  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 28511
    • Просмотр профиля
Re: Найти все файлы, НЕ содержащие строку.
« Ответ #12 : 13 Сентября 2010, 18:53:38 »
Сами то пробовали?
Ваши варианты найдут ВСЕ файлы, даже те, в которых есть искомая строка. Потому что - там есть ДРУГИЕ строки... которые замечательно подпадают под правило -v "строка".
Ты уж тогда задачу конкретизируй. Все файлы в которых нет заданной строки ищутся grep --file-without-match подробности в man grep если тебе что-то другое нужно, то объясни что именно. Каков вопрос таков ответ.

Уже решил, действительно немного не до конца ман дочитал. Вернее, дочитал, но не сообразил, как именно применить.
Вот с количеством файлов в каталоге придётся повозиться. Но это уже чисто алгоритмическая задачка будет, не для этого топика.
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

Прежде чем [Отправить], нажми [Просмотр] и прочти собственное сообщение. Сам-то понял, что написал?…

Оффлайн dieselist

  • Активист
  • *
  • Сообщений: 525
    • Просмотр профиля
    • diesel.pp.ua
Re: Найти все файлы, НЕ содержащие строку.
« Ответ #13 : 13 Сентября 2010, 22:08:52 »
Вот с количеством файлов в каталоге придётся повозиться. Но это уже чисто алгоритмическая задачка будет, не для этого топика.

опиши задачу. тоже интересно подумать
Ubuntu, Gentoo, RHEL, AIX

Оффлайн AnrDaemon

  • Автор темы
  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 28511
    • Просмотр профиля
Re: Найти все файлы, НЕ содержащие строку.
« Ответ #14 : 13 Сентября 2010, 23:22:41 »
Вернёмся к Far'у? :)
В каталоге плагина может быть несколько файлов помощи на разных языках.
Хотелось бы оставить только русские, но если такого нет - то английский.
Статистика утверждает, что если какой-то хэлп есть, это почти всегда английский. Часто и русский тоже.
Вот, задачка на реализацию примерно так выглядит: если количество файлов, завёрнутых grep'ом идентично количеству файлов в каталоге (и больше нуля), поискать второй вариант. Либо (для простоты) ничего не делать.
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

Прежде чем [Отправить], нажми [Просмотр] и прочти собственное сообщение. Сам-то понял, что написал?…

 

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