Búsquedes
Contingut
- 1 Locate
- 2 Whereis
- 3 Which
- 4 Ls
- 5 Find
- 5.1 Busca a la carpeta actual i també a subcarpetes:
- 5.2 Busca a tot el sistema:
- 5.3 Buscar també links:
- 5.4 Buscar característiques:
- 5.5 Buscar fitxers d'un usuari:
- 5.6 Buscar fitxers amb uns certs permisos
- 5.7 Executar comandes sobre fitxers trobats:
- 5.8 Buscar fitxers que continguin una cadena:
- 5.9 Buscar els fitxers que l'han modificat en l'ultim dia / x minuts
- 5.10 Busca i substituir contingut
- 5.11 Funcionament del Find
- 6 Buscar continguts amb Grep
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/* [email protected]:/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
- -amin +-n: fichero accedido hace [más/menos de] n minutos
- 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