Eu tenho um comando para a pergunta acima. Alguém poderia me explicar o comando abaixo?
DATE=`date +%m%d%Y-%H%M%S` ; for i in `ls -lt *.log* | grep "Oct 11" | grep -E '12:|13:|14:' | awk '{print $9}'`; do zip logs_`hostname`_${DATE}.zip $i; done
O script ao qual você está se referindo não está bem escrito e pode não funcionar como o esperado.
Aqui está o detalhamento do que está fazendo:
DATE =
date +%m%d%Y-%H%M%S
Armazene a data atual em DATE em um formato como "10192016-171249". Consulte a "data do homem" para obter detalhes. A propósito, essa não é a melhor maneira de armazenar uma data / hora. O uso do formato AAAAMMDD para a parte da data é muito preferido por razões de referência / classificação rápidas.
ls -lt * .log *
Isso obtém uma lista de diretórios de todos os arquivos que correspondem ao padrão "* .log *" no diretório atual. Por exemplo, poderia ser algo como:
-rw-r--r-- 1 root root 174106 Sep 30 17:28 dpkg.log.1
-rw-r--r-- 1 root root 1642 Oct 11 12:28 fontconfig.log
-rw-r----- 1 root adm 272254 Oct 11 11:28 kern.log.4.gz
-rw-r----- 1 root adm 272254 Oct 11 17:14 kernXX.log.1.gz
-rw-r----- 1 root adm 414 Sep 29 18:09 user.log.4.gz
-rw-r--r-- 1 root root 209 Sep 26 14:18 chipsee_clone.log
-rw-r--r-- 1 root root 1333 Apr 9 2015 pm-powersave.log.1
grep "11 de outubro"
Em seguida, "extrai" apenas as linhas em que "11 de outubro" está presente, o que daria:
-rw-r--r-- 1 root root 1642 Oct 11 12:28 fontconfig.log
-rw-r----- 1 root adm 272254 Oct 11 11:28 kern.log.4.gz
-rw-r----- 1 root adm 272254 Oct 11 17:14 kernXX.log.1.gz
grep -E '12: | 13: | 14:
Em seguida, extrai novamente apenas aqueles em que "12:" ou "13:" ou "14" estão presentes: (novamente, muito mal feito, pois isso aplica o campo de horas, mas também aos campos de minutos e segundos)
-rw-r--r-- 1 root root 1642 Oct 11 12:28 fontconfig.log
-rw-r----- 1 root adm 272254 Oct 11 17:14 kernXX.log.1.gz
awk '{print $ 9}'
A partir dessas linhas restantes, ele extrai o 9º elemento (o nome do arquivo):
fontconfig.log
zip logs_
hostname
_ $ {DATE} .zip $ i
Usando um loop "for" em torno do comando acima, cada um desses arquivos é adicionado a um arquivo zip cujo nome é:
logs_`hostname`_${DATE}.zip
onde hostname
é o nome do seu host e "$ {DATE}" é o DATE armazenado anteriormente. Portanto, se o seu nome de host for BLUERAY e usando a DATA acima, você obterá um arquivo chamado:
logs_BLUERAY_10192016-171249.zip
Novamente, esse script é muito mal escrito e você certamente não deve usá-lo (ou qualquer outro escrito pelo mesmo autor) para aprender a escrever scripts ...