Hi guys,

have you ever wondered, which files in your config space are all affected by a specific class? For instance if you want to duplicate that class as the starting point for a new class, or rename it, etc.? Well, I wrote a little script to do this job for me. Here's an example of how it's used:

% grepclass DEBIAN
Defined in: ./class/50-host-classes
Found script directory: ./scripts/DEBIAN
Found hook: ./hooks/instsoft.DEBIAN
Found package configuration: ./package_config/DEBIAN
Found additional package configuration: ./package_config/FAIBASE
Found debconf configuration: ./debconf/DEBIAN
Found file: ./files/etc/kernel-img.conf/DEBIAN
Found file: ./files/boot/grub/menu.lst/DEBIAN
Used conditionally in: ./scripts/LAST/50-misc

Feedback and patches are welcome.

Regards,
Michael
#! /bin/bash

if [ -z "$1" ]; then
        echo "Usage: $0 class [directory]"
        exit 1
fi
class=$1
if [ -n "$2" ]; then
        dir=$2
else
        dir=.
fi

for x in `egrep -l "([[:space:]'\"]|^)$class([[:space:]'\"]|\$)" $dir/class/*`; 
do
        [ -x "$x" ] && echo "Defined in: $x"
done
for x in `ls $dir/basefiles/$class.t* 2>/dev/null`; do
        echo "Found basefile: $x"
done
[ -d $dir/scripts/$class ] && echo "Found script directory: $dir/scripts/$class"
for x in `ls $dir/hooks/*.$class 2>/dev/null`; do
        echo "Found hook: $x"
done
[ -f $dir/package_config/$class ] && echo "Found package configuration: 
$dir/package_config/$class"
for x in `egrep -l "PACKAGES.+$class" $dir/package_config/*`; do
        echo "Found additional package configuration: $x"
done
[ -f $dir/debconf/$class ] && echo "Found debconf configuration: 
$dir/debconf/$class"
[ -f $dir/disk_config/$class ] && echo "Found disk configuration: 
$dir/disk_config/$class"
for x in `find $dir/files -name $class -o -name \'$class.t*\'`; do
        echo "Found file: $x"
done
for x in `egrep -l "ifclass.+$class" $dir/scripts/*/* $dir/hooks/* $(find 
$dir/files -name postinst)`; do
        echo "Used conditionally in: $x"
done


Antwort per Email an