Tendo problemas com os diretórios de limpeza dos comandos FIND

3

Não tenho certeza do que estou fazendo de errado nisso. Eu li um monte de posts e sites, mas ainda estou tendo problemas.

Eu preciso verificar um sistema para arquivos que foram alterados no dia anterior, mas preciso pular algumas pastas montadas, já que elas são montadas em unidades com muitos TBs.

Aqui está a configuração: Tenho poucas unidades montadas em pastas dentro de / usr / local / connect / / usr / local / connect / logs - > monta em um NFS / usr / local / connect / DR01 - > é montada em um compartilhamento de DR mais alguns assim ...

Eu quero executar um comando normal find (ou qualquer comando que funcione para isso) que exclua esses diretórios. Aqui estão algumas coisas que eu tentei que não pareciam funcionar.

find . ! -path "/usr/local/connect/" -type f -name "*.txt" -mtime -1

find . -type f -path "/usr/local/connect/" -prune -o -name "*.txt" -mtime -1

Nenhum desses parece funcionar. Eu tentei fazer isso em diferentes ordens (como -type f primeiro, ou podar primeiro na linha, etc.) também. Mas eu li ameixa remove o caminho do processo. Isso parece que deve ser uma coisa fácil de fazer. Deixe-me saber se você ver meu erro! Desde já, obrigado!

    
por saleetzo 16.05.2017 / 22:11

1 resposta

4

-path "/usr/local/connect/" corresponderia apenas a um caminho de arquivo que é exatamente /usr/local/connect/ . Isso nunca corresponderá porque, com find . , todos os caminhos começarão com .

Então você quer:

find / -path '/usr/local/connect/*' -type d -prune -o \
       -name '*.txt' -type f -mtime -1 -print

O -print também é importante. Sem ele, haveria um -print implícito para arquivos que correspondem à expressão inteira (portanto, ambas as partes do -o ).

Note que você também pode usar -xdev para evitar cruzar qualquer limite do sistema de arquivos.

Se você quiser executá-lo com find . quando o diretório atual for /usr/local , isso deve ser:

cd /usr/local &&
  find . -path './connect/*' -type d -prune -o \
         -name '*.txt' -type f -mtime -1 -print
    
por 16.05.2017 / 22:20

Tags