Existe uma versão do comando 'find' que salva seu estado?

3

Se uma descoberta estiver pesquisando um disco grande e for interrompida por algum motivo, eu gostaria de poder reiniciá-lo, de onde parou.

Existe uma versão do 'find' que faz isso?

O problema é que, se você salvar o diretório e iniciá-lo de lá, ele não fará o mesmo. Por exemplo:

find /bigvol -type f -execdir whereami="$(pwd)";do_it {} \; echo whereami >/bigvol/state

Colocará o diretório atualmente pesquisado no arquivo / bigvol / state, digamos que seja / bigvol / down / in / the / deep

No entanto, se você começar o próximo encontro lá:

find "$(cat /bigvol/state)" -type f -execdir whereami="$(pwd)";do_it {} \; echo whereami >/bigvol/state

Então você encontrará tudo em 'deep' (e re-execute 'deep' para os primeiros arquivos daquele diretório), mas você irá parar e nunca procurar / bigvol / further

Eu gostaria de poder dizer algo como:

find <dir>:<starting from>

Então, se eu salvei o último arquivo trabalhado, no exemplo acima, inicie-o novamente.

Idealmente, a sintaxe permitiria:

find <dir>:<starting_from>    -- start from the last file and re-execute for that filefind <dir>:+<starting_from>    -- start from the file after the last file last file
filefind <dir>:-<starting_from>    -- start from the file before the last file last file

Alguma idéia?

    
por Peter Brooks 07.12.2015 / 09:11

1 resposta

0

Eu não sei de nenhuma maneira de fazer isso. Talvez outra ferramenta possa fazer isso. Ou talvez você precise de outra maneira de ver a situação.

Você pode dividir a ação de localização em várias pesquisas. A pasta /bigvol provavelmente tem subpastas. Você pode dividir a ação em find para cada uma dessas pastas. Se tiver processado as primeiras várias pastas, você poderá pular essas últimas.

O problema aqui é que uma dessas subpastas pode ter 95% de todos os arquivos. Você poderia analisar isso com du . Se você sabe disso, pode dividi-lo ainda mais. A questão é até onde você vai com essa abordagem.

    
por 07.12.2015 / 10:25