find filer fra en shell?
Hvordan søger man på filer i en shell?
Jeg vil fx gerne finde alle de filer der hedder stl_deque.h som både kan ligge i mit homedir og i roden (/bin, /usr, /etc /lib etc.).
Jeg har prøvet med:
locate stl_deque.h
Dette giver:
/usr/include/c++/4.1.3/bits/stl_deque.h
/usr/include/c++/4.2/bits/stl_deque.h
/usr/include/c++/3.4/bits/stl_deque.h
Men jeg har også en kopi liggende i mit homedir som ikke bliver fundet.
Jeg vil fx gerne finde alle de filer der hedder stl_deque.h som både kan ligge i mit homedir og i roden (/bin, /usr, /etc /lib etc.).
Jeg har prøvet med:
locate stl_deque.h
Dette giver:
/usr/include/c++/4.1.3/bits/stl_deque.h
/usr/include/c++/4.2/bits/stl_deque.h
/usr/include/c++/3.4/bits/stl_deque.h
Men jeg har også en kopi liggende i mit homedir som ikke bliver fundet.
Kommentarer6
Re: find filer fra en shell?
Skal du finde ting uden at bruge locate databasen kan du bruge programmet find. Det er dog en del langsommere men er bedre at bruge i scripts.
Re: find filer fra en shell?
updatedb tager normalt alle monterede enheder
Så enten er /dev/hda5 ikke monteret på det tidspunkt du kørte kommandoen updatedb ellers også er enheden blevet udeladt i konfigurationsfilen /etc/updatedb.conf - prøv at kigge efter, hvad der er udeladt (pruned) med parametrene PRUNEFS (filsystemer) og PRUNEPATHS (kataloger).
Re: find filer fra en shell?
PRUNEFS="NFS nfs nfs4 afs binfmt_misc proc smbfs autofs iso9660 ncpfs coda devpts ftpfs devfs mfs shfs sysfs cifs lustre_lite tmpfs usbfs udf"
export PRUNEFS
# paths which are pruned from updatedb database
PRUNEPATHS="/tmp /usr/tmp /var/tmp /afs /amd /alex /var/spool /sfs /media"
Men kan ikke se at partitionerne er "pruned".
Re: Re: find filer fra en shell?
PRUNEPATHS="/tmp /usr/tmp /var/tmp /afs /amd /alex /var/spool /sfs /media"
HER skal du fjerne /media og din updatedb vil virke (og tage 4ever :))
Re: find filer fra en shell?
Til dit formål ville jeg bruge find.
Quick guide:
find ~ -name '*porn*'
hvis du vil finde alle filer med et navn som indeholder *porn* i dit home, Hvis du erstatter -name med iname, så ignorer find om det er store eller små bogstaver.
Skal du gøre noget med de enkelte filer kan det gøres sådan her:
find . -name *.log -exec rm '{}' \;
Dette vil finde alle filer der slutter med .log og slette dem.