find às vezes resulta em arquivos não correspondentes sendo compactados

2

Estou tentando fazer um arquivo zip de todos os arquivos em um diretório específico que foram modificados nos últimos x minutos.

Aqui está o meu comando:

find "/path/to/dir" -mmin -30 -not -name ".*" -exec zip -r "testfile.zip" "{}" \+

Se eu fizer o tempo de modificação pequeno o suficiente, ele identifica corretamente o arquivo que eu modifiquei recentemente.

O problema é ... se eu aumentar o tempo mínimo de modificação para, digamos, 50 (ele continua mudando), então o arquivo zip adiciona todos dos arquivos em / path / to / dir . Mesmo que todos os arquivos definitivamente não tenham sido alterados.

Então, de alguma forma, existe um arquivo específico que faz com que todo o comando find seja explodido. Analisei todos os arquivos recentemente modificados (no último dia) para um arquivo com espaços ou algo assim, mas não encontrei nenhum. E isso não importa, já que estou citando as chaves, certo?

O que mais poderia estar causando esse comportamento estranho?

    
por AmadeusDrZaius 02.12.2014 / 19:28

1 resposta

3

Por padrão, find inclui tudo em sua pesquisa: diretórios, arquivos e links simbólicos.

find "/path/to/dir" -mmin -30 -not -name ".*" -exec zip -r "testfile.zip" "{}" \+

Se /path/to/dir foi modificado nos últimos 30 minutos, ele passará em todos os testes e zip , desde que recebeu a opção -r , adicionará o diretório e tudo o que estiver sob ele ao arquivo morto. / p>

Você pode abordar isso de algumas maneiras, usando um dos seguintes (ou ambos):

  • Não atribua zip a opção -r . Você está interessado apenas em arquivos modificados recentemente, em vez de em todos os arquivos que estão em um diretório recém-modificado.
  • Adicione o -not -type d test à expressão find , para que não corresponda aos diretórios.
find "/path/to/dir" -not -type d -mmin -30 -not -name ".*" -exec zip "testfile.zip" "{}" \+
    
por 02.12.2014 / 20:45