Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: использование 'find' (скрипт на shell)
Форум разработчиков электроники ELECTRONIX.ru > Cистемный уровень проектирования > Операционные системы
romez777
Приветствую.

Задача в том, чтобы выбрать из дерева линукс ядра все файлы с расширением *.[chsS] (т.е. исходники), кроме определенных каталогов (Documentation, scripts..), при этом есть ряд исключений которые нужно соблюсти: не добавляя каталог drivers/, добавить _только_ определенные файлы из drivers/net/

Получился следующий скрипт:
Код
#!/bin/sh -x

LNX=/usr/src/linux-2.4.18-14
cd /
find $LNX \
  -path "$LNX/arch/*" ! -path "$LNX/arch/i386*" -prune -o \
  -path "$LNX/include/asm-*" ! -path "$LNX/include/asm-i386*" -prune -o   \
  -path "$LNX/tmp*" -prune -o \
  -path "$LNX/Documentation*" -prune -o \
  -path "$LNX/scripts*" -prune -o \
  -path "$LNX/drivers*" -prune -o \
  -name "*.[chxsS]" -print > $HOME/cscope.files


Не могу сообразить как добавить определенные файлы из drivers/net/..., не выполняя лишний 'find' ?

Перерыл весь 'man find', но решения не нашел.

Подскажите, в чем проблема. Благодарю.
Damon
Как вариант, выкинуть сл. строку:
Код
  -path "$LNX/drivers*" -prune -o \

и последнюю строку переписать так:
Код
  -name "*.[chxsS]" -print | grep '$LNX/\([^d][^r][^i][^v][^e][^r][^s]\|drivers/net\)/' > $HOME/cscope.files

А вообще, спасибо за образец применения find'а. Не знал, что он так умеет. Мне проще найти им все
Код
find $LNX -type f

и "погрепать" результат, чтоб выделить нужное. :-)
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.