Форум программистов, компьютерный форум, киберфорум
Shell, Bash
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.61/18: Рейтинг темы: голосов - 18, средняя оценка - 4.61
3 / 3 / 0
Регистрация: 19.10.2009
Сообщений: 28

Найти все файлы, находящиеся в директории и во всех ее поддиректориях, соответствующих маске

18.03.2010, 23:47. Показов 3279. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем доброго времени суток!

Помогите разобраться в коде. Мне завтра сдавать лабу, а я в этом плохо понимаю! Код у меня есть! И он прекрасно работает! Времени катастрофически не хватает что бы читать соответствующую литературу по этому поводу!

Задание №1
В текстовом файле лежит информация такого типа
1. Яблоко 9 грн.
2. Груша 20 грн.
3. Лимон 30 грн.
4. Апельсин 30 грн.
5. Банан 10 грн.
6. Айва 20 грн.
7. Вишня 30 грн.
8. Черешня 25 грн.
9. Слива 15 грн.
10. Клубника 40 грн.
Вывести на экран название фрукта цена которого ближайшая к средней цене.

код
Bash
1
2
3
4
5
6
mid=`cat fruits.txt | awk '{sum+=$3} END {print sum/NR}'`
echo -n 'Мost average price for '
cat fruits.txt | awk 'BEGIN {value=999}
    {if ('$mid'>$3) if (value>'$mid'-$3) {value='$mid'-$3; name=$2}
    if ('$mid'<$3) if (value>$3-'$mid') {value=$3-'$mid'; name=$2}}
END {print name}'

Задание №2
Написать скрипт search.sh, принимающей такие параметры:
<path> <filter> <string1> [string2]
скрипт должен находить все файлы что находятся в директории и во всех ее поддиректориях соответствующих маске <filter> и есть строка заданный параметром string1, выводить на экран полный путь к файлу и номер строки / строк в котором найдены строку string1 и количество таких строк.
в случае если заданный строку string2 во всех найденных файлах нужно заминины string1 на string2 с ручным подтверждением каждой замены.

Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#!/bin/bash
if [ $# -lt 3 ] || [ $# -gt 4 ]
then    echo Bad Command Line
    exit 1
fi
cd $1
if [ $# -eq 3 ]
then
    arr=`find | grep $2`
    echo $arr
    for i in ${arr[@]}
    do
        echo $i
        fgrep -n $3 $i
        echo -n all matches - 
        fgrep -c $3 $i
    done
fi
if [ $# -eq 4 ]
then
    arr=`find | grep $2`
    for i in ${arr[@]}
    do
        if [ `fgrep -c $3 $i` -ne 0 ]
        then
            echo $i
            echo Find matches. Replace? y or n
            read opt
            if [ $opt = y ]
            then
                sed 's/'$3'/'$4'/g' $i
            fi
        fi
    done
fi
Зарание спасибо!!!
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
18.03.2010, 23:47
Ответы с готовыми решениями:

Как получить список всех файлов в директории и поддиректориях
Требуется сделать метод, который бы возвращал массив всех файлов находящихся в заданной директории и всех поддиректориях на произвольную...

как найти во всех в подпапках, в определенной папке текущей директории, все файлы с расширение lua?
Скажите пожалуйста, как найти во всех в подпапках, в определенной папке текущей директории, все файлы с расширение lua? Например, ...

Перечислить файлы в директории по маске (Из С# в С++)
Ребят, помогите сделать тоже самое, только на С++. Я не знаю, что и делать. using System; using System.Collections.Generic; ...

1
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
22.03.2010, 05:40
Bash
1
2
{if ('$mid'>$3) if (value>'$mid'-$3) {value='$mid'-$3; name=$2}
 if ('$mid'<$3) if (value>$3-'$mid') {value=$3-'$mid'; name=$2}}
ищет минимальную разность между средним значением и очередным проверямым
если разность меньше предыдущей разности, сохраняет разность (она потом становится предыдущей, в следующей проверке)

Добавлено через 19 минут
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
       
       grep [options] PATTERN [FILE...]
       
...
       
       In addition, two variant programs egrep and fgrep are available.  Egrep
       is the same as grep -E.  Fgrep is the same as grep -F.
 
...
 
       -F, --fixed-strings
              Interpret PATTERN as a list of fixed strings, separated by  new-
              lines, any of which is to be matched.
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
[guest@station tmp]$ cat sr
abcd
text
exit
int
abc
[guest@station tmp]$ fgrep -n "$(cat sr)" main.c
9:    int field;
11:    int quant;
18:void PrintValues(struct value *);
26:int main(void) /* ANSI C89 */
46:        int i;
60:    PrintValues(values);
67:    exit(EXIT_SUCCESS);
76:    const int n = 1000;
79:       char **ReadFile(const char *file, int n) */
82:    int i;
170:    const int nv = 100;
217:/* PrintValues:  выводит значения */
218:void PrintValues(struct value *values)
220:    const int nv = 10; /* 100; */
225:    int i;
229:        printf("value: %15s, field: %d, quantity: %4d" "\n",
[guest@station tmp]$
это fgrep принимает string1 в виде слов для поиска, которые разделены переводами строк

Bash
1
sed 's/'$3'/'$4'/g' $i
s - substitute
s/что/на_что/
g - global (заменить по всей строке)

Добавлено через 18 минут
sed когда файл проверяет, берёт его построчно
и каждую строку прогоняет через свои параметры, которые заданы
потому $i - это не строка, а файл
но s///g работает для строки (для каждой)
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
22.03.2010, 05:40
Помогаю со студенческими работами здесь

Как скопировать/удалить файлы в директории по маске?
Добрый день. Подскажите, пожалуйста, как можно скопировать-удалить (переместить) файлы _по маске_ из одной папки в другую? Пробовал так: ...

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

Найти и скопировать в отдельную папку все файлы по маске
Всем здравствуйте, Необходимо чтобы файлы, находящиеся в одной папке (и подпапках) с рабочей книгой, находились по маске и...

Директории Ubuntu: удалить файлы с расширением .c находящиеся в данном каталоге и его подкаталогах
Как через C обратится к директории в Ubuntu и удалить файлы с расширением .c находящиеся в этом каталоге и его подкаталогах?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru