ensam är stark

xfind

april 21, 2010

Skrev en liten shell-funktion för en tid sedan för att underlätta en viss procedur jag börjat använda mig av på sistone. Det är nämligen så att jag allt som oftast vill leta igenom alla filer av en viss filtyp i det katalog jag befinner mig i samt att dessa filer ska sökas igenom efter en viss sträng.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
function xfind {
    if [ $# -ge 2 ]; then
        EXTENSION=$1
        shift
        find . -name "*.$EXTENSION" | xargs grep "$@"
    else
        echo "xfind takes at least two arguments. 
            xfind <extension> <pattern to grep>"
    fi
}

Funktionen är väldigt enkel och bör inte vara allt för svår att förstå, trots det kommer här en kort förklaring. Funktionen tar minst två argument varpå argument nummer ett är den filändelse som ska matchas. Den lista av tillgängliga filer som skapas av de matchande filerna körs sedan mot grep för att filtrera bort de filer som ej innehåller strängen som angivits i resterande argument.

Just shell-skripting har jag fattat tycke för och har skrivit ett större projekt förut. Dock vill jag inte påstå att min xfind-funktion är den bästa lösning på just detta problem, men den fungerar underbart bra för mig.

Ett exempel

Följande kommer söka igenom alla python-filer (med ändelsen .py) och returnera ett grep-resultat av de som innehåller funktionen def TestRunner.

xfind py def TestRunner
blog comments powered by Disqus