xfind
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