URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 9024
[ Назад ]

Исходное сообщение
"Скрипт на Линуксу."

Отправлено Fier , 03-Фев-11 19:56 
Драсте. Помогите с заданием. мучаюсь уже с ВМВаре долго.

знайти всі файли які містять у назві літеру 'b' вивести на екран номери рядків з цих файлів в яких зустрічається цифра 1.

Пофик в каком каталоге.
Поиск файлов на определенную букву уже нашел, но не могу найти как надо код что бы он выдавал номер строк.

$ find  / -name “[a-j]*” -print
Вышеуказанная команда позволит отыскать все файлы в системе, начинающиеся с букв от a до j

Вот что поиску файлов. Помогите. Напишите скрипт. Через head i tail пробывал. ничего интересного не нашел.


Содержание

Сообщения в этом обсуждении
"Скрипт на Линуксу."
Отправлено ACCA , 03-Фев-11 21:43 
Уроки нужно учить самому.

Про find - ты забыл -type f. Номера строк даст grep -n. Учти, что в имени каталога могут быть пробелы, то есть find ... -type f -print0 | xargs -0 grep -n ...

И с травой завязывай - .ru это совсем не Рiдна Україна.


"Скрипт на Линуксу."
Отправлено DeadLoco , 05-Фев-11 05:06 
> ... -type f -print0 | xargs -0 grep -n ...
> И с травой завязывай - .ru это совсем не Рiдна Україна.

А вам тут не лондон с вошынгтоном, извольте команды писать кириллицей!

Не поймите меня правильно....


"Скрипт на Линуксу."
Отправлено Fier , 08-Фев-11 16:48 
> Уроки нужно учить самому.
> Про find - ты забыл -type f. Номера строк даст grep -n.
> Учти, что в имени каталога могут быть пробелы, то есть find
> ... -type f -print0 | xargs -0 grep -n ...
> И с травой завязывай - .ru это совсем не Рiдна Україна.

"... -type f -print0 | xargs -0 grep -n ..." - написал... но надо еще ж название файла указать что бы только те которые с буквы 'b'. Попытался написать с "-нейм" отказалось работать совсем.


"Скрипт на Линуксу."
Отправлено Fier , 08-Фев-11 17:45 
>> Уроки нужно учить самому.
>> Про find - ты забыл -type f. Номера строк даст grep -n.
>> Учти, что в имени каталога могут быть пробелы, то есть find
>> ... -type f -print0 | xargs -0 grep -n ...
>> И с травой завязывай - .ru это совсем не Рiдна Україна.
> "... -type f -print0 | xargs -0 grep -n ..." - написал...
> но надо еще ж название файла указать что бы только те
> которые с буквы 'b'. Попытался написать с "-нейм" отказалось работать совсем.

Найти все файли которые имею в названии букву 'b' - вывести на экран номера рядков с этих файлов в которых встречается цыфра 1. В каталоге /etc.


"Скрипт на Линуксу."
Отправлено DeadLoco , 09-Фев-11 12:57 
> Найти все файли которые имею в названии букву 'b' - вывести на
> экран номера рядков с этих файлов в которых встречается цыфра 1.
> В каталоге /etc.

Уважно читай man find:

-regex pattern
             True if the whole path of the file matches pattern using regular
             expression.  To match a file named ``./foo/xyzzy'', you can use
             the regular expression ``.*/[xyz]*'' or ``.*/foo/.*'', but not
             ``xyzzy'' or ``/foo/''.

-iregex pattern
             Like -regex, but the match is case insensitive.


В твоєму випадку пайп має бути наступний:

find /path -type f -print0 -regex "*b*" | xargs -0 egrep -n "1"


"Скрипт на Линуксу."
Отправлено ACCA , 09-Фев-11 12:57 
> которые с буквы 'b'. Попытался написать с "-нейм" отказалось работать совсем.

Попробуй написать -name '*b*'

У тебя в задании не "с буквы b" а "с буквой b".


"Скрипт на Линуксу."
Отправлено babusha , 19-Фев-11 13:31 
>вивести на екран номери рядків з цих файлів в яких зустрічається цифра
> 1.

$ find  / -name “[a-j]*” -print | ruby -e "count = 1; STDIN.read.split(/\n/).each { |line| puts count.to_s + line if line =~ /1/; count += 1 } "


"Скрипт на Линуксу."
Отправлено ill ates , 26-Фев-11 12:18 
> >вивести на екран номери рядків з цих файлів в яких зустрічається цифра
>> 1.
> $ find  / -name “[a-j]*” -print | ruby -e "count =
> 1; STDIN.read.split(/\n/).each { |line| puts count.to_s + line if line =~
> /1/; count += 1 } "

Может шелл сначала подучишь, прежде чем свой быдлокод на руби постить?
for a in /etc/**/*b*;echo $a && awk '/1/{print FNR}' $a