segunda-feira, 15 de abril de 2013

Localizando arquivos com o comando find


$ find nando/ -name '*.txt'

$ find nando/ -name '*.txt' -xdev (não descer em dispositivos montados)

Localiza somente arquivos que possuir a extensão txt a partir da pasta nando. Os sinais são obrigatório no comando pois delimita somente a parte da extensão e não o nome do arquivo, pois exibirá o resultado da expressão txt somente na parte da extensão, se tiver txt na parte do nome de um arquivo e este não possuir a extensão txt, ele não será listado no resultado, como exemplo meutxt.doc. A opção -name faz distinção de maiúscula/minuscula. Ou seja txt não é a mesma coisa que TXT.

$ find nando/ -name 'readme.txt'

Localiza somente os arquivos de nome readme.txt da forma exata devido a opção -name ou idem find nando/ -name readme.txt

Para não fazer distinção de maiúsculas/minuscula (o padrão)

$ find /usr/doc/ -iname Readme.txt

Localiza todos os arquivos que tem o nome Readme.txt que pode ser README.txt , readme.txt ou Readme.txt.

Em todos os exemplos é listado sempre o caminho completo do arquivo.

Localiza todos os arquivos ocultos a partir do diretório atual, incluído subdiretório.

$ find . -name ".*"

Localiza todos os arquivos ocultos incluindo subdiretórios, além de exibir as permissões, dono e data.

$ find . -type f -name '.*' -exec ls -l {} \+

Para localizar os arquivos que foram modificado nos últimos sete dias, podemos usar -mtime com o argumento -7.

$ find . -mtime -7 -name "*.rtf" -print

./docs/outros/cartas.rtf
./docs/contas.rtf
./docs/recibos.rtf

Se usarmos apenas o número 7 (sem o hífen), recuperamos apenas os arquivos que foram modificados há exatamente sete dias atrás:

$ find . -mtime 7 -name "*.br" -print
./tmp/acesso.br

Para localizar os arquivos nos quais não mexi por pelo menos 30 dias, usamos +30.

$ find . -mtime +30 -name "*.doc" -print
./cadastro.doc
./deleta.doc
./tmp/cartas.doc


Localizar todos os arquivos que foram alterados nos últimos 3 minutos.

$ find -type f -mmin -3

Este comando listar somente os arquivos modificados durante os últimos 3 minutos a partir do diretório atual, localizando também arquivos em diretórios ocultos que sofreram alterações.

Nota:
Arquivos que foram modificados a mais de 3 minutos não serão listado por este comando.

Para identificar arquivos que não pertencem a nenhum usuário ou a nenhum grupo, use:

$ find / -nouser -o -nogroup -print

Localizando todos os arquivos de uma extensão e copiando os mesmos.

$ find /var/slapt-get/ -name \*.txz -type f -exec cp {} /tmp/pacotes/ \;

Ótimo comando, localiza todos os arquivos txz de todas as pastas a partir de /var/slapt-get e copia todos para a pasta /tmp/pacotes. Útil se você que gravar todos os pacotes de sua distro baixada via slapt-get ou yum que armazena os mesmos em várias subpastas de categorias, deste que a limpeza do cache automática não esteja habilitada, a afim de bkp para não precisar baixar tudo de novo.


Localizando arquivos de bkp com com final ~

$ find /tmp -name "*.txt~" -exec echo {} \; | nl

Este comando localiza todo os arquivos de bkp txt~ no diretório /tmp incluído também os subdiretórios abaixo dele na forma exata com terminação .txt~ e conta a quantidade de arquivos localizados.

$ find /tmp -name "*~" -exec echo {} \; | nl

Este comando localiza todos os arquivos de bkp que terminar com ~ no final do nome.


$ find /tmp -name "*.txt" -exec echo {} \; | nl

Localiza somente arquivos que tenha a extensão txt, se tiver no meio do nome como exemplo paulotxt.doc não será listado.
É feito distinção de maiúsculo e minusculo nesta linha de comando pois txt e TXT não é a mesma coisa devido a opção -name.

Para não fazer distinção de maiúscula e minuscula na extensão especificada use a opção -iname no lugar de -name para o find.

Removendo todos os arquivos .txt~

$ find /home/nando/ -name "*.txt~" -exec rm {} \;

Este comando irá remover todos os arquivos .txt~ a partir do diretório /home/nando incluindo os subdiretórios.


Nenhum comentário:

Postar um comentário