Взгляните на Ubuntu JEOS (Как раз достаточно Операционной системы).
Если Ваши результаты поиска уверены обратным каналам без пробелов, Вы могли бы использовать xargs
как это:
locate my.cnf | xargs grep user
Однако необходимо привыкнуть защищать себя для обработки случая, где путь или имя файла могли бы содержать пространство путем сообщения xargs
использовать null
как разделитель и сообщение locate
(или безотносительно программы Вы используете для возвращаемых строк) чтобы также отправить это как разделитель как это:
locate -0 my.cnf | xargs -0 grep user
Это работало бы, даже если бы Ваш путь включал пробелы как /name with space/my.cnf
.
Если я понимаю правильно, Вы могли бы сделать что-то вроде этого:
#!/bin/sh
typeset what1=$1
typeset what2=$2
[ "$#" -eq 2 ] || { echo "Two arguments expected"; exit 1; }
locate ${what1} | while read file; do
grep ${what2} ${file} /dev/null
done
Это ищет файлы, соответствующие locate
аргумент (what1
) для строки, которая соответствует what2
. dev/null
силы аргумента grep
сообщить об имени файла соответствия.
/dev/null
, хотя можно также повторить имя файла сами.
– Caleb
12.09.2012, 01:50
echo ${file}
но мне не нравится иметь необходимость породить еще один процесс просто с этой целью. взгляд
– JRFerguson
12.09.2012, 02:03
echo
таким образом, это не порождает процесс так или иначе.
– Caleb
12.09.2012, 02:26
grep -q "#what2" && [other action]
. Как я сказал, который является интересным взломом однако, и я буду помнить это, может пригодиться, хотя я склонен не любить вещи, что их функция не с готовностью очевидна для кого-то читающего код.
– Caleb
12.09.2012, 02:31
Острота:
for file in $(locate my.cnf) ; do grep -r user "$file" ; done
Если Вы хотите к шаблону поиска в файлах под именем каталога, Вы добрались от, располагаются затем -r
будет заботиться о нем, иначе удаляют -r
.
locate my.cnf | xargs grep -H user
так, чтобы выходной отчет о строках, в котором был найден файл (файлы) соответствие. – StarNamer 11.09.2012, 02:20locate -0 my.cnf | xargs -0 -r grep user
в случае, если любые имена файлов имели пробелы и т.д. в них. Обратите внимание что не все версииlocate
поддерживайте-0
или--null
опция для завершенного пустым указателем вывода.mlocate
делает. IIRC, GNU располагается, делает также. – cas 11.09.2012, 03:50