<?xml version="1.0" encoding="koi8-r"?>
<rss version="0.91">
<channel>
    <title>OpenForum RSS: Поиск строк в файлах</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/8649.html</link>
    <description>День добрый.&lt;br&gt;Столкнулся с небольшой проблемой при написании bash-скрипта, от которого требуется след:&lt;br&gt;вывести все файлы и размер этих файлов, в которых встречается задананная пользователем строка. Суть проблемы в том, что не хочет у меня скрипт правильно читать каталоги или файлы, в которых есть пробелы:&lt;br&gt;for i in $( find $2); do&lt;br&gt;if &#091; &#096;grep $1 $i -l -s&#096; &#093;;then&lt;br&gt;echo $i $(filesize $i)&lt;br&gt;fi &lt;br&gt;done&lt;br&gt;Если я загоняю выражение $(find $2) в двойные ковычки, то скрипт загоняет в i одной строкой сразу все найденные пути. &lt;br&gt;Пытался делать через &lt;br&gt;find $2 -exec grep $1 -l -s &apos;&#123;&#125;&apos; &#092;;&lt;br&gt;Но не знаю, как сделать вывод еще и размера для каждого найденного файла.&lt;br&gt;Стыдно конечно, что обращаюсь за помощью с такой простой задачей, но у меня идеи кончились =&#092;&lt;br&gt;</description>

<item>
    <title>Поиск строк в файлах (sproot)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/8649.html#8</link>
    <pubDate>Wed, 24 Mar 2010 11:05:13 GMT</pubDate>
    <description>&amp;gt;Как я понимаю, передать параметр через xargs в целый блок с условиями &lt;br&gt;&amp;gt;невозможно? &lt;br&gt;&lt;br&gt;Возможно. Пример:&lt;br&gt;seq 1 10 &amp;#124; xargs -n 1 -i sh -c &apos;if &#091; -n &#123;&#125; &#093; ; then echo &quot;Number &#123;&#125;&quot;; fi&apos;&lt;br&gt;&lt;br&gt;&amp;gt;В таком случае надо переписывать через цикл, в котором уже будут проверки &lt;br&gt;&amp;gt;на условия. Но опять таки встает вопрос, как передать в $i &lt;br&gt;&amp;gt;полную строку пути, чтобы она не разбивалась пробелами. А вот как &lt;br&gt;&amp;gt;так сделать моих знаний не хватает( &lt;br&gt;&amp;gt;Очень прошу помощи) &lt;br&gt;&lt;br&gt;Если не изменяет память, можно временно объявить IFS=&apos;&apos; перед циклом, а потом восстановить дефолтное значение.&lt;br&gt;Из man bash:&lt;br&gt;...&lt;br&gt;IFS    The Internal Field Separator that is used for word splitting after expansion and to  split  lines&lt;br&gt;              into words with the read builtin command.  The default value is &amp;#8216;&amp;#8216;&amp;lt;space&amp;gt;&amp;lt;tab&amp;gt;&amp;lt;newline&amp;gt;&amp;#8217;&amp;#8217;.&lt;br&gt;...&lt;br&gt;</description>
</item>

<item>
    <title>Поиск строк в файлах (Refraction)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/8649.html#7</link>
    <pubDate>Tue, 23 Mar 2010 16:24:19 GMT</pubDate>
    <description>Как я понимаю, передать параметр через xargs в целый блок с условиями невозможно?&lt;br&gt;В таком случае надо переписывать через цикл, в котором уже будут проверки на условия. Но опять таки встает вопрос, как передать в $i полную строку пути, чтобы она не разбивалась пробелами. А вот как так сделать моих знаний не хватает( &lt;br&gt;Очень прошу помощи)&lt;br&gt;</description>
</item>

<item>
    <title>Поиск строк в файлах (Refraction)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/8649.html#6</link>
    <pubDate>Tue, 23 Mar 2010 11:16:20 GMT</pubDate>
    <description>Господа, помогите этот скрипт, чтобы в случае ошибки открытия файла или папки выдавалась ошибка, но не силами самой функции, а вручную через условие &lt;br&gt; &lt;br&gt;</description>
</item>

<item>
    <title>Поиск строк в файлах (sproot)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/8649.html#5</link>
    <pubDate>Mon, 15 Mar 2010 23:34:14 GMT</pubDate>
    <description>&amp;gt;&#091;оверквотинг удален&#093;&lt;br&gt;&amp;gt;&amp;gt;sproot&#064;matrix:tmp$ fgrep -rlZ 123 1/ &amp;#124; xargs -0 du -sbh &lt;br&gt;&amp;gt;&amp;gt;4       1/tst te &lt;br&gt;&amp;gt;&amp;gt;sproot&#064;matrix:tmp$ &lt;br&gt;&amp;gt;&lt;br&gt;&amp;gt;Спасибо огромное. Работает отлично. &lt;br&gt;&amp;gt;Только есть вопрос маленький: что делает опция -0 ? &lt;br&gt;&amp;gt;Как я понял, grep -Z добавляет после каждого пути к файлу маркер &lt;br&gt;&amp;gt;конца строки в виде нуля. xargs -0 читает входное значение, пока &lt;br&gt;&amp;gt;не наткнется на 0 и уже после этого передает в du &lt;br&gt;&amp;gt;? &lt;br&gt;&lt;br&gt;Да, верно. fgrep -Zl терминирует имя файла нулевым символом, а xargs -0 умеет читать такие строки. Это необходимо когда входящий поток для команды xargs содержит пробелы, кавычки или слеши.&lt;br&gt;</description>
</item>

<item>
    <title>Поиск строк в файлах (Refraction)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/8649.html#4</link>
    <pubDate>Mon, 15 Mar 2010 14:59:01 GMT</pubDate>
    <description>&amp;gt;sproot&#064;matrix:tmp$ find 1/ &lt;br&gt;&amp;gt;1/ &lt;br&gt;&amp;gt;1/tst te &lt;br&gt;&amp;gt;sproot&#064;matrix:tmp$ fgrep -rlZ 123 1/ &amp;#124; xargs -0 du -sbh &lt;br&gt;&amp;gt;4       1/tst te &lt;br&gt;&amp;gt;sproot&#064;matrix:tmp$ &lt;br&gt;&lt;br&gt;Спасибо огромное. Работает отлично. &lt;br&gt;Только есть вопрос маленький: что делает опция -0 ?&lt;br&gt;Как я понял, grep -Z добавляет после каждого пути к файлу маркер конца строки в виде нуля. xargs -0 читает входное значение, пока не наткнется на 0 и уже после этого передает в du ?&lt;br&gt;</description>
</item>

<item>
    <title>Поиск строк в файлах (sproot)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/8649.html#3</link>
    <pubDate>Mon, 15 Mar 2010 13:05:52 GMT</pubDate>
    <description>&amp;gt;&amp;gt;fgrep -rl text test111 &amp;#124; xargs du -sh &lt;br&gt;&amp;gt;&amp;gt;&lt;br&gt;&amp;gt;&amp;gt;&lt;br&gt;&amp;gt;&amp;gt;Как-нибудь так попробуйте. &lt;br&gt;&amp;gt;&lt;br&gt;&amp;gt;Файлы находит, но при передаче результата в du снова рвется путь &lt;br&gt;&lt;br&gt;sproot&#064;matrix:tmp$ find 1/&lt;br&gt;1/&lt;br&gt;1/tst te&lt;br&gt;sproot&#064;matrix:tmp$ fgrep -rlZ 123 1/ &amp;#124; xargs -0 du -sbh&lt;br&gt;4       1/tst te&lt;br&gt;sproot&#064;matrix:tmp$                     &lt;br&gt;</description>
</item>

<item>
    <title>Поиск строк в файлах (Refraction)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/8649.html#2</link>
    <pubDate>Mon, 15 Mar 2010 12:39:49 GMT</pubDate>
    <description>&amp;gt;fgrep -rl text test111 &amp;#124; xargs du -sh &lt;br&gt;&amp;gt;&lt;br&gt;&amp;gt;&lt;br&gt;&amp;gt;Как-нибудь так попробуйте. &lt;br&gt;&lt;br&gt;Файлы находит, но при передаче результата в du снова рвется путь&lt;br&gt;</description>
</item>

<item>
    <title>Поиск строк в файлах (phpcoder)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/8649.html#1</link>
    <pubDate>Mon, 15 Mar 2010 12:12:26 GMT</pubDate>
    <description>fgrep -rl text test111 &amp;#124; xargs du -sh&lt;br&gt;&lt;br&gt;&lt;br&gt;Как-нибудь так попробуйте.&lt;br&gt;</description>
</item>

</channel>
</rss>
