====== Shellscripts diversos e variados ====== Vou colocar aqui os shellscript's que desenvolvo ou que encontrei de amigos e considero muito útil. Quero deixar para caso alguém precise vou deixar documentando o código. ===== Em uma listagem de arquivos de backup, script coleta campos da data e utiliza para remover o arquivo de certa data informada ===== root@aquiles:# ls bck_imanager0101180100.zip bck_imanager2012170100.zip bck_imanager2709160100.zip users_groups_42_imanager0912170100.zip users_groups_42_imanager2407170100.zip bck_imanager0102180100.zip bck_imanager2101170100.zip bck_imanager2709170100.zip users_groups_42_imanager1001180100.zip users_groups_42_imanager2408160100.zip bck_imanager0103180100.zip bck_imanager2101180100.zip bck_imanager2710160100.zip users_groups_42_imanager1002180100.zip users_groups_42_imanager2408170100.zip bck_imanager0104180100.zip bck_imanager2102170100.zip bck_imanager2710170100.zip users_groups_42_imanager1003180100.zip users_groups_42_imanager2409160100.zip bck_imanager0105180100.zip bck_imanager2102180100.zip bck_imanager2711160100.zip users_groups_42_imanager1004180100.zip users_groups_42_imanager2409170100.zip bck_imanager0106180100.zip bck_imanager2103170100.zip bck_imanager2711170100.zip users_groups_42_imanager1005180100.zip users_groups_42_imanager2410160100.zip bck_imanager0107180100.zip bck_imanager2103180100.zip bck_imanager2712160100.zip users_groups_42_imanager1006180100.zip users_groups_42_imanager2410170100.zip bck_imanager0201180100.zip bck_imanager2104170100.zip bck_imanager2712170100.zip users_groups_42_imanager1007180100.zip users_groups_42_imanager2411160100.zip bck_imanager0202180100.zip bck_imanager2104180100.zip bck_imanager2801170100.zip users_groups_42_imanager1011170100.zip users_groups_42_imanager2411170100.zip bck_imanager0203180100.zip bck_imanager2105160100.zip bck_imanager2801180100.zip users_groups_42_imanager1012170100.zip users_groups_42_imanager2412160100.zip bck_imanager0204180100.zip bck_imanager2105170100.zip bck_imanager2802170100.zip users_groups_42_imanager1101180100.zip users_groups_42_imanager2412170100.zip bck_imanager0205180100.zip bck_imanager2105180100.zip bck_imanager2802180100.zip users_groups_42_imanager1102180100.zip users_groups_42_imanager2501170100.zip bck_imanager0206180100.zip bck_imanager2106160100.zip bck_imanager2803170100.zip users_groups_42_imanager1103180100.zip users_groups_42_imanager2501180100.zip bck_imanager0207180100.zip Vamos pegar um arquivo e analisar o modelo **bck_imanager0912170100.zip** queremos excluir todos os arquivos do ano de 2017 então vamos extrair o **"17"** da parte **"0912170100"** e depois fazer um teste e caso encontre o valor igual a 17, remova :) Eis o script #!/bin/bash # criamos uma variavel chamada ARQUIVO para o script ficar portavel ARQUIVO="bck_imanager" # listamos todos os arquivos que começam com o o conteudo da variavel ARQUIVO FILES=$(ls ${ARQUIVO}*) # Executo um loop varrendo todos os arquivos extraindo o ano e dia e mes coloquei o dia e mes para tentar ser didatico for i in ${FILES} do # aqui utilizamos um recurso do bash substring o nome da variavel e i # entao queremos no começo da string pegar a substring começando no digito 12 # ou seja excluindo a string "bck_imanager" # e na parte final excluir -4 digitos excluido o ".zip" no final ficaremos somente com a porção de data AUX=$(echo ${i:12:-4}) # aqui aplicamos o mesmo com a substring andando com os digitos e pegando DIA DIA=$(echo ${AUX:0:-8}) # pegando MES MES=$(echo ${AUX:2:-6}) # e finalmente pegando o ANO ANO=$(echo ${AUX:4:-4}) # testamos se o ano e 17 se for # vamos entrar no if e remover os arquivos desde que temos o nome do arquivo na variavel i if [ ${ANO} == 17 ] then echo "Removendo arquivo: ${i}" rm ${i} fi done ===== Buscar tamanhos dos arquivos por extensão ===== #!/bin/bash CAMINHO="." EXTENSAO="*vbox" FIND=$(which find) TAMANHOTOTAL=$( ${FIND} ${CAMINHO} -type f -name "${EXTENSAO}" -exec du -shc {} + | tail -1 | awk '{print $1}' ) echo "O tamanho total dos arquivos no diretorio ${CAMINHO} com a extensao ${EXTENSAO} e: ${TAMANHOTOTAL}"