Här är kommandot jag använder för att hitta text i filer.
find . -iname '*.txt' -exec grep -Hi 'hej på dig' {} + ;
Om man vill bestämma hur många nivåer ner i katalogträdet man vill göra sökningen så kan man göra så här:
find . -maxdepth 1 -iname '*.txt' -exec grep -Hi 'hej på dig' {} + ;
-maxdepth 1 gör så att det bara söks i den mapp man står i och int i undermapparna.
-maxdepth 2 gör alltså så det söks i den map man står i och en nivå under.
. Gör att sökningen utgår från den mapp man står i, alternativ sökväg kan anges.
-iname gör att den inte bryr sig om stora eller små bokstäver
'*.txt* kan bytas ut mot det som passar ens behov bäst. Detta matchar alla filer som slutar på .txt.
-exec grep gör att de filer som i detta fall .txt filer skickas vidare till grep.
- grep söker i filerna efter hej på dig.
- H gör så att sökvägen till filen skrivs ut.
-i gör så att det inte görs nån skillnad på gemener och VERSALER i sökningen.
Det spelar ingen roll om man skriver -i - H eller -iH men jag tyckte det var lättare att komma ihåg när det står Hi =) Det är dock viktigt med att använda ett stort H och ett litet i annars blir det ett annat kommando :)
Skriv man find i terminal för att komma åt manualen eller skriv info find för en mer utförlig information, klicka er nån undermeny med Enter.
TIPS:
Kopiera in följande längst ned i filen ~/.bashrc
# Den här söker rätt på text inuti filer. Användning: findtxt n "filtyp_eller_namndel" "text du söker efter" n är optional och anger hur djupt ner i kattalogträdet du vill söka. ex. findtxt "*.txt" "Hej Jonas" alt. findtxt 5 "*.txt" "Hej Jonas"
findtxt ()
{
if [ -z "$1" ] ; then # Kollar om det helt och hållet saknas argument
echo "Tips: findtxt \"*.txt\" \"sökord\" Alt. findtxt n \"*.txt\" \"sökord\" n är hur djupt ner i katalogträdet man vill söka (optional)"
elif [ -z "$2" ] ; then # Kollar om det andra argumentet har angivits.
echo "Du måste också ange vilken text du söker efter tex. \"Hej Jonas\""
elif [ -z "$3" ] ; then # Kollar om det tredje argumentet har angivits annars körs det utan nåt maxdepth har sats på sökningen.
find . -iname "${1}" -exec grep -Hi "${2}" {} +;
else # Minst tre argument har angivits, utgår från att det är: maxdepth, filen och sökordet. Om det skulle vara fler eller felaktiga argument så tar grund kommandot find eller grep hand om det, hoppas jag :P
find . -maxdepth "${1}" -iname "${2}" -exec grep -Hi "${3}" {} +;
fi
}
Spara och öppna en ny terminal och skriv följande för att göra en sökning:
findtxt "*.txt" "det du söker efter" Alt. findtxt n "*.txt" "det du söker efter" där n står för hur djupt ner i katalogträdet du vill söka. Skriv bara findtxt för info.
Om du vill söka i nån annan typ av fil så är det bara byta ut *.txt mot valfri.
Denna söker bara i den mapp du står i och underkatalogerna .
Inga kommentarer:
Skicka en kommentar