Модераторы: korob2001, ginnie
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [Ищу]Модуль для работы с файлами из shell-а 
:(
    Опции темы
Logo
Дата 31.10.2009, 21:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 694
Регистрация: 22.7.2008

Репутация: 3
Всего: 10



Нужно выполнять поиск и замену, с бекапами, в файлах из командной строки. В общем нужно что-то вроде этого http://www.powergrep.com/ только консольное и под *nix.
PM MAIL   Вверх
Pfailed
Дата 31.10.2009, 22:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 933
Регистрация: 19.7.2009

Репутация: 22
Всего: 39



Все это уже встроено в *nix. Называется bash, sed, grep и при желании заменяется/дополняется perl-ом.


--------------------
PM MAIL   Вверх
Logo
Дата 1.11.2009, 08:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 694
Регистрация: 22.7.2008

Репутация: 3
Всего: 10



Да, но встроенных возможностей часто не хватает. Бекапов нет, вернее есть с ключом i, но не более одного бекапа, и восстановить их автоматом нельзя. Трудно реализовать поиск по списку папок из текстового файла - либо длинная программа с open, либо вызов perl внутри самого однострочника, что тоже неудобно. Наконец, возможности искать файлы по содержанию тоже нет, хотя возможно просто я не нашел.
PM MAIL   Вверх
arto
Дата 1.11.2009, 14:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1495
Регистрация: 31.10.2004

Репутация: 38
Всего: 40



Трудно реализовать поиск по списку папок из текстового файла - либо длинная программа с open, либо вызов perl внутри самого однострочника, что тоже неудобно. -- ?

Наконец, возможности искать файлы по содержанию тоже нет, хотя возможно просто я не нашел.  -- ?
PM MAIL ICQ   Вверх
Logo
Дата 1.11.2009, 16:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 694
Регистрация: 22.7.2008

Репутация: 3
Всего: 10



Цитата(arto @ 1.11.2009,  14:25)
Трудно реализовать поиск по списку папок из текстового файла - либо длинная программа с open, либо вызов perl внутри самого однострочника, что тоже неудобно. -- ?

Наконец, возможности искать файлы по содержанию тоже нет, хотя возможно просто я не нашел.  -- ?

Как найти файл по содержащемуся в нему тексту?

Можно ли сделать тоже самое, если на STDIN подается список файлов, либо файловых шаблонов в которых искать?
PM MAIL   Вверх
ramus
Дата 1.11.2009, 21:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 53
Регистрация: 21.2.2008

Репутация: 1
Всего: 1



Цитата

если на STDIN подается список файлов,


Посмотрите пожалуйста команду UNIX: xargs
$ man xargs

Цитата

Как найти файл по содержащемуся в нем тексту?


$ find <you_DIR_tree> -type f -exec grep -n <finding_text> \;

опцию  -n для команды grep надо проверять на Вашей версии UNIX (она выводит имя найденного файла). 

Это сообщение отредактировал(а) ramus - 1.11.2009, 21:37
PM MAIL   Вверх
amg
Дата 2.11.2009, 07:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1145
Регистрация: 3.8.2006
Где: Новосибирск

Репутация: 38
Всего: 50



Цитата(ramus @  1.11.2009,  21:25 Найти цитируемый пост)
опцию  -n для команды grep надо проверять на Вашей версии UNIX (она выводит имя найденного файла).
В "моем" grep для этого служит опция -l. И есть рекурсивный поиск (в поддиректориях), т.е. даже и find не нужно

Код
#Как найти файл по содержащемуся в нему тексту?
grep -rl <finding_text> <you_DIR_tree>

#поиск по списку папок из текстового файла
xargs -a  <file_with_you_DIRs> grep -rl <finding_text>


Logo, все что Вы хотели в этом посте, крайне просто решается стандартными командами *nix (кроме, может быть, инкрементального бакапа с автоматическим восстановлением, но это специфическая задача, тут, скорее всего, действительно придется писать скрипт или установить какую-нибудь специализированную программу).
PM MAIL   Вверх
Bulat
Дата 2.11.2009, 09:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


татарский Нео
***


Профиль
Группа: Завсегдатай
Сообщений: 1701
Регистрация: 22.3.2006
Где: Альметьевск

Репутация: 5
Всего: 57



Цитата(Logo @  1.11.2009,  16:54 Найти цитируемый пост)
Как найти файл по содержащемуся в нему тексту?


grep, fgrep и прочее тебе в помощь... Более того, встроенные функции и команды как и на уровне самого никса, так и в самом перле работают гораздо лучше и быстрее чем собственно написные... В конце-концов, если уж так получилось, что функция не выполняет полностью что нужно, в перле можно их еще и переопределять. smile


--------------------
менеджер по кодеврайтингу  smile 
PM MAIL WWW   Вверх
Logo
Дата 3.11.2009, 22:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 694
Регистрация: 22.7.2008

Репутация: 3
Всего: 10



Спасибо, буду плотнее изучать *unix. 
Код

xargs -a  <file_with_you_DIRs> grep -rl <finding_text>

Только вот у меня пишет что ключа -a у xargs нет.
PM MAIL   Вверх
amg
Дата 4.11.2009, 07:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1145
Регистрация: 3.8.2006
Где: Новосибирск

Репутация: 38
Всего: 50



Цитата(Logo @  3.11.2009,  22:10 Найти цитируемый пост)
Только вот у меня пишет что ключа -a у xargs нет.
Да не проблема. Во-первых, может, у Вас эта опция по другому называется (man xargs). Во-вторых, и без нее можно:
Код
xargs < file_with_you_DIRs grep -rl finding_text
cat file_with_you_DIRs | xargs grep -rl finding_text


PM MAIL   Вверх
gcc
Дата 5.11.2009, 15:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Агент алкомафии
****


Профиль
Группа: Участник
Сообщений: 2691
Регистрация: 25.4.2008
Где: %&й

Репутация: 1
Всего: 17



Цитата(arto @ 1.11.2009,  14:25)
Наконец, возможности искать файлы по содержанию тоже нет, хотя возможно просто я не нашел.  -- ?

можно написать модуль такой как POSIX и в консоле вызывать в perl

иногда нужно сделать не легкие обработки, а в консольных утилитах проблематично, лучше написать скрипт на perl
PM WWW ICQ Skype GTalk Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl"
korob2001
sharq
  • В этом разделе обсуждаются общие вопросы по языку Perl
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Если ваш вопрос относится к CGI программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", можно скачать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0522 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.