localiza arquivos modificados em um intervalo no unix

1

Estou no linux e tentei descobrir o comando find por algum tempo para poder listar os diretórios modificados em um período de 24 horas há um certo número de dias, mas não consigo fazê-lo funcionar. Entre outras coisas, tentei:

find -type d -mtime +1 -mtime -2

Mas ele retorna 0 correspondências, enquanto find -type d -mtime +1 dá 16721 correspondências e find -type d -mtime -2 dá 120 correspondências. Eu deveria ficar em torno de 50-60 partidas.

Eu também tentei a opção -a para AND entre elas, mas não faz diferença.

    
por Zitrax 25.11.2009 / 16:51

2 respostas

3

Os argumentos para a opção -mtime para encontrar são um pouco contra-intuitivos. Basicamente, o que você está pedindo é "mostre-me tudo o que é mais antigo do que há dois dias e há menos de dois dias" ... a opção "+" é um pouco instável (de find (1)):

When find figures out how many 24-hour periods ago the file was last accessed, any fractional part is ignored, so to match -atime +1, a file has to have been accessed at least two days ago.

Para um intervalo de um único dia, você pode usar apenas -mtime 2 , caso contrário, sugiro usar -mmin e um pouco de aritmética de shell para chegar onde você quer ir.

    
por 25.11.2009 / 16:56
2

Eu usaria um script:

STARTTIMEFILE='mktemp' || exit 1
touch -d '2009-10-01 00:00' "$STARTTIMEFILE" || exit 1

ENDTIMEFILE='mktemp' || exit 1
touch -d '2009-11-01 00:00' "$ENDTIMEFILE" || exit 1

find . -newer "$STARTTIMEFILE" -and -not -newer "$ENDTIMEFILE" -ls

rm -f "$STARTTIMEFILE" "$ENDTIMEFILE"

Muito mais fácil de entender do que -mtime .

    
por 25.11.2009 / 17:43