#!/bin/sh #------------------------------------------------------------------------------ # ========= | # \\ / F ield | OpenFOAM: The Open Source CFD Toolbox # \\ / O peration | # \\ / A nd | Copyright (C) 2016-2017 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. # #------------------------------------------------------------------------------ Script=${0##*/} usage() { cat< options: -count | -c prefix lines by the number of occurrences -help | -h print the usage 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 fvSchemes ddtSchemes.default * Relaxations factors for U in fvSolutions files in all tutorials: foamSearch -c $FOAM_TUTORIALS fvSolution relaxationFactors.equations.U USAGE } error() { while [ "$#" -ge 1 ]; do echo "$1"; shift; done usage exit 1 } case "$1" in (-c | -count) count="-c" shift ;; (-h | -help) usage && exit 0 ;; -*) error "$1 is not a valid option/filename" ;; esac [ "$#" -eq 3 ] || error "Wrong number of arguments: expected 3, found $#" [ -d "$1" ] || error "$1 is not a directory" tmp=$(mktemp tmp.XXXXXX) files=$(find "$1" -name "$2") [ -n "$files" ] || error "No file $2 found in $1" for f in $files do foamDictionary -entry "$3" "$f" 2>/dev/null >> "$tmp" done [ -s "$tmp" ] && \ sort "$tmp" | uniq $count | sed '/^[\t 1-9]*$/d' || \ echo "No keyword $2 found in $3 files" rm "$tmp" 2>/dev/null #------------------------------------------------------------------------------