Búsquedes

De WikiMar
Dreceres ràpides: navegació, cerca

Locate

Actualitzar base de dades amb fitxers del sistema:

updatedb

Buscar fitxer ràpidament:

locate NOM_FITXER
  • Busca fitxers/directoris que continguin el string que li passem com a paràmetre.
  • Busca a una base de dadess (/var/lib/mlocate/mlocate.db). Cal actualitzarla amb updatedb (root).
  • Configuració del que entra en la bd: /etc/updatedb.conf. Conté variables PRUNEFS, PRUNEPATHS (es separa amb espais).

Whereis

  • Per un programa, dona informació sobre on està el binari, els manuales, etc.
  • -b: busca binaris.
  • -m: busca per manuals.
  • -s: busca còdi font.
> whereis ls 
ls: /bin/ls /usr/share/man/man1p/ls.1p.gz /usr/share/man/man1/ls.1.gz


Which

Busca només en el Path

which NOM_FITXER

Ls

(Buscar a la carpeta actual nomes)

ls -las NOM_FITXER
ls -las PART_NOM_FITXER*


Find

Busca a la carpeta actual i també a subcarpetes:

find . -name PART_NOM_FITXER*

Algun sistema necessita cometes en el nom a buscar si s'utilitzen caracters comod:

find . -name "PART_NOM_FITXER*"

Una altra forma:

find . |grep PART_NOM_FITXER

o insensible a Majuscules/minuscules:

find . |grep -in PART_NOM_FITXER

Busca a tot el sistema:

find / -name PART_NOM_FITXER*

Buscar també links:

find . -iname PART_NOM_FITXER*

Buscar característiques:

find . -size +1500


Buscar fitxers d'un usuari:

find . -user <userid>


Buscar fitxers amb uns certs permisos

find / -perm /0777 # Té algún dels indicats (convertir a ristra de 
                     permisos: rwxrwxrwx. Té algún de los indicats significa
                     tenir algú dels que surten en aquesta ristra. 777 es un mal
                     exemple perque fa match amb qualsevol).
find / -perm +0777 # Ídem que "/" (deprecated, evitar-lo)
find / -perm  6000 # Match exacte
find / -perm -6000 # Té tots els indicats o algén més.
  • Sense el 4o bit, no es tindrà en compte.

Executar comandes sobre fitxers trobats:

find /var/log -name "*.txt" -type f -exec chmod 755 {} \;

This command changes the permissions of all files with a name ending in .txt in the directory /var/music. The action is carried out by specifying the option -exec chmod 755 {} \; in the command. For every file whose name ends in .txt, the command chmod 755 {} is executed replacing {} with the name of the file. The semicolon (backslashed to avoid the shell interpreting it as a command separator) indicates the end of the command.


Buscar fitxers que continguin una cadena:

grep -r * TEXT

o bé

find /tmp -exec grep "search string" '{}' /dev/null \; -print

o bé

find /tmp -exec grep -H "search string" '{}' \; -print

o filtrant el tipus de fitxers

find . -name *.html -exec grep 'CADENA' {} \;

Buscar els fitxers que l'han modificat en l'ultim dia / x minuts

find . -mtime -1

Exemple per syncronitzar nomes si hi ha modificat un fitxer. Executar aquest script cada 10 minuts.

FOLDERSYNC=folder_sync
modified=$(find $folder_sync -mmin -11 | wc -l)
echo "$modified files have changed."
if [ x$modified != x0 ]; then
 echo "Synchronizing..."
 rsync -avr --rsync-path=/ftp/private/lisapath/bin/rsync $FOLDERSYNC/* lisapath@ftp.esoc.esa.int:/ftp/private/lisapath/$FOLDERSYNC
fi


Busca i substituir contingut

find /home/bruno/old-friends -type f -exec sed -i 's/ugly/beautiful/g' {} \;

Exemples utilitzats per desinfectar virus de fitxers en el servidor web:

find . -path "./aldeaglobal.net*" -prune -o -name "*.htm" -mtime -6 -exec sed -i 's/<script language="javascript">function t(){return z(.*script>//' {} \;
find . -path "./aldeaglobal.net*" -prune -o -name "*.html" -mtime -6 -exec sed -i 's/<script language="javascript">function t(){return z(.*script>//' {} \;
find . -path "./aldeaglobal.net*" -prune -o -name "*.php" -mtime -6 -exec sed -i "/^<?php ob_start('security_update'); function security_update(.*important security update ?>$/d" {} \;

Aquests busquen en els fitxers que han estat en els darrers 6 dies.


Mes info: http://www.brunolinux.com/02-The_Terminal/Find_and%20Replace_with_Sed.html

http://www.oracle.com/technology/pub/articles/dulaney_sed.html


Funcionament del Find

find [P L H] [path] [expressio]
  • -P(never follow symlinks), -L (follow), -H (follow només les linies de comandes: ex.: find ./ y ./ es un symlink). Ej.: find -P /etc/init.d (sin "/" final).
  • Options:
    • -maxdepth levels
    • -mount (no atravesar fs)
  • Tests:
    • -amin +-n: fichero accedido hace [más/menos de] n minutos
      • -atime : ídem pero con horas
      • ídem con "c" (change) en vez de "a" (accessed)
    • -group
    • -user
    • -name/-iname
    • -perm g=w/0020
    • -regex
    • -size n[cwbkMG]
    • -type d|f|l|...
    • exp1 -o exp2 / -not exp1
  • Actions:
    • -delete
    • -exec
    • -ok command
    • -print (default)


Més info a: http://lpi.aluzina.org/wiki/101_103

Buscar continguts amb Grep

grep -r "CADENA" /carpeta