Baixe o app para aproveitar ainda mais
Prévia do material em texto
Programação para Servidores Aula 21 Sumário • Buscando arquivos; • Exercícios. 2 Procurando arquivos • Podemos u@lizar o comando find para buscar por arquivos recursivamente a par@r de um determinado diretório. Sua sintaxe é: find [arquivos_ou_diretórios] [opções] • As principais opções do comando find são: -atime n lista arquivos com horários de acesso iguais a n dias. Se for u@lizado +n, deverá ter sido acesso a mais de n dias, enquanto -n indica a menos de n dias; -mtime n lista arquivos com horário de modificação de n dias. Se for u@lizado +n, deverá ter sido modificado a mais de n dias, enquanto -n indica a menos de n dias; 3 Procurando arquivos • Comando find (con@nuação...): -name 'padrão' Seleciona arquivos que casem com o padrão de caracteres coringa; -prune Não entra recursivamente nos diretórios; -size n Seleciona arquivos de tamanho n; -type t Seleciona arquivos pelo @po (d=diretório, f=arquivo); -user u Seleciona arquivos do usuário u (nome ou UID); -exec permite executar operações sobre os arquivos encontrados (esta opção deve ser u@lizada com MUITO CUIDADO). 4 Procurando arquivos • Exemplos: – Listar arquivos no diretório atual que foram modificados hoje: find –mtime 0 – Listar arquivos no diretório /etc (e todos os seus subdiretórios) que não foram modificados há mais de 1 ano: find /etc –type f –mtime +365 – Listar arquivos apenas no diretório /etc que não foram modificados há mais de 1 ano: find /etc/* –prune –type f –mtime +365 – Listar arquivos no diretório atual que tem tamanho maior ou igual a 10 Kbytes: find –type f –size +10 5 Procurando arquivos • Exemplos: – Listar arquivos cujos nomes casem com o padrão aula##_ex##.sh, onde os símbolos # representam dígitos: find –name aula[0-9][0-9]_ex[0-9][0-9].sh – Copiar arquivos que tenham mais que 10 Kbytes do diretório para o diretório abc: find -type f -size +10 -exec cp {} abc \; – Imprimir na tela o conteúdo dos arquivos no diretório atual que não foram modificados há mais de 1 ano: find –type f –mtime +365 -exec cat {} \; – Remover os arquivos do diretório atual que não foram modificados há mais de 1 ano: find –type f –mtime +365 -exec rm -i {} \; 6 Procurando arquivos • Exemplo: script para excluir arquivos que não são acessados há pelo menos 1 ano: if [ "$#" = "0" ]; then echo "Uso: $0 dir1 dir2 dir3 ... dirN" exit 1 fi while (( "$#" )); do if [[ $(ls "$1") == "" ]]; then echo "Diretório vazio!" else find "$1" -type f -atime +365 -exec rm -i {} \; fi shift done 7 Exercícios • Escrever scripts para as seguintes tarefas: 1. Listar todos os diretórios dentro do diretório passado por parâmetro e, ao final, mostrar o total de diretórios encontrados. Não devem ser listados arquivos comuns; 2. Reescrever o script do exercício anterior para listar somente os arquivos comuns. Diretórios não devem ser listados; 3. Procurar os arquivos chamados core.???? (as interrogações representam dígitos) no diretório passado como parâmetro (e subpastas) e registra os arquivos encontrados num arquivo no diretório /tmp; 4. Procurar arquivos cujos nomes terminam em '.bak' no diretório passado como parâmetro (e subpastas) e os move para o diretório / tmp/bak (criar o diretório caso ele não exista e exibir uma msg). Ao final, exibir uma mensagem dizendo quantos arquivos foram movidos. Se nenhum arquivo for encontrado, NEM CRIAR o diretório. 8
Compartilhar