#!/bin/sh #------------------------------------------------------------------------------ # ========= | # \\ / F ield | OpenFOAM: The Open Source CFD Toolbox # \\ / O peration | # \\ / A nd | Copyright (C) 2016 OpenFOAM Foundation # \\/ M anipulation | #------------------------------------------------------------------------------- # License # This file is part of OpenFOAM. # # OpenFOAM is free software: you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # OpenFOAM is distributed in the hope that it will be useful, but WITHOUT # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or # FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License # for more details. # # You should have received a copy of the GNU General Public License # along with OpenFOAM. If not, see . # # Script # foamSearch # # Description # Searches a directory for dictionary files of a particular name and # extracts entries of a particular keyword, sorting into a unique list. # # Requires foamDictionary. # #------------------------------------------------------------------------------ usage() { exec 1>&2 while [ "$#" -ge 1 ]; do echo "$1"; shift; done cat< Options: -c | -count prefix lines by the number of occurrences -h | -help help * Searches the for files named and extracts entries with . Sorts result into a list of unique entries (removing repeats). Examples: * Default ddtSchemes entries in the fvSchemes files in all tutorials: foamSearch \$FOAM_TUTORIALS ddtSchemes.default fvSchemes * Relaxations factors for U in fvSolutions files in all tutorials: foamSearch -c \$FOAM_TUTORIALS relaxationFactors.equations.U fvSolution USAGE exit 1 } #------------------------------------------------------------------------------ unset optCount # Parse options while [ "$#" -gt 0 ] do case "$1" in -h | -help) usage ;; -c | -count) optCount="-c" shift ;; -*) usage "unknown option: '$1'" ;; *) break ;; esac done [ "$#" -eq 3 ] || usage "Wrong number of arguments: expected 3, found $#" [ -d "$1" ] || usage "$1 is not a directory" dirName="$1" key="$2" fileName="$3" fileList=$(find $dirName -name $fileName -type f) [ -n "$fileList" ] || usage "No file $fileName found in $dir" tmpFile=temp.$$ trap "rm -f $tmpFile 2>/dev/null; exit 0" EXIT TERM INT for i in $fileList do foamDictionary -entry "$key" $i 2>/dev/null done > $tmpFile [ -s "$tmpFile" ] && \ sort $tmpFile | uniq $optCount | sed '/^[\t 1-9]*$/d' || \ echo "No keyword '$key' found in '$fileName' files" 1>&2 #------------------------------------------------------------------------------