localiza arquivos no linux com algumas exceções

0

Eu estou tentando fazer um comando que irá encontrar todos os arquivos modificados nas últimas 24 horas e que são PHP apenas com um loop para olhar em cada diretórios public_html e salvar a saída em um arquivo HTML para que eu possa ver diariamente. / p>

 for i in 'ls /var/cpanel/users'; 
 do find /home/$i/public_html -type f -ctime -1 -exec ls -ls {} \; > 
 /home/demo4/public_html/output.html;
 done;

Mas não está funcionando corretamente e dando saída não correta. aqui está a saída que é apenas para uma conta, deve ser para todas as contas

0 -r-xr-xr-x 1 ziaengg ziaengg 0 Jan 12 15:16 /home/ziaengg/public_html/modules/mod_rsflashmatic/xml/rsflashmatic_93.xml 23320 -rw-r--r-- 1 ziaengg ziaengg 23851008 Jan 12 15:25 /home/ziaengg/public_html/error_log

Além disso, gostaria de saber como posso enviar o resultado por e-mail para qualquer ID específico.

E qual parâmetro devo adicionar se eu quiser excluir qualquer arquivo que contenha a palavra-chave cache . Eu sou muito novo nisso.

    
por user38002 12.01.2015 / 15:05

2 respostas

4

Tente:

cd /var/cpanel/users &&
for i in *
do
    find "/home/$i/public_html" -type f ! -iname '*cache*' -ctime -1 -ls 
done > /home/demo4/public_html/output.html

Notas:

  • Use >> em vez de > , caso contrário, cada iteração substitui a saída do último. Ou redirecione a saída de todo o loop, caso em que você pode usar > .
  • algumas implementações de find têm uma opção -ls , que é bem parecida com -exec ls -ld {} \; , portanto, use-a quando estiver disponível.
  • Use o operador ! para negar pesquisas: ! -iname '*cache*'
  • se o seu find não for compatível com o predicado% padrão -iname , use -name '*[cC][aA][cC][hH][eE]*' .
  • Como esses são nomes de usuário, você pode usar for i in $(ls ..) , mas é mais seguro para usar for i in * .
por 12.01.2015 / 15:18
2

Com zsh em um sistema GNU com uconv e recode :

{ echo '<html><head><meta charset="UTF-8"</head><body><pre>'
  users=(/var/cpanel/users/*(:t)) &&
    find /home/$^users/public_html -type f -ctime -1 ! -iname '*cache*' -ls |
    uconv --from-callback escape-c -f utf8 -t utf8 |
    recode u8..html
  echo "</pre></body></html>"
} > /home/demo4/public_html/output.html

(note, no entanto, que recode não suporta caracteres acima de U + FFFF)

Você precisa dessas etapas adicionais de uconv / recode para evitar problemas com nomes de arquivos com < ou & caracteres em seus nomes ou valores de bytes de 8 bits (aqui assumimos que os nomes de arquivo são codificados em UTF-8 (e para caracteres inválidos, exibimos seus valores de byte como \xAB )

    
por 12.01.2015 / 16:07

Tags