Embora você possa fazer isso com um loop e stat , se realmente quiser, isso é algo que find é bom e pode ser feito em uma única linha. Você pode criar um arquivo de timestamp especial toda vez que o script for executado e, em seguida, selecionar todos os arquivos mais recentes / antigos que o arquivo:
find -name "*.$filetype" ! -newer timestamp.file
Isso localizará todos os arquivos na árvore de diretórios nomeados de acordo com o padrão *.$filetype e que são mais antigos (não ! newer) do que o arquivo de registro de data e hora, como você pediu. Se você quiser arquivos mais recentes (o que parece ser mais útil), basta retirar o ! .
Encontrando os arquivos, você pode pedir ao find para fazer algo com eles usando '-exec:
find -name "*.$filetype" -newer timestamp.file -exec cp '{}' "$destination" +
Isso executará cp com todos os arquivos correspondentes como argumentos, para serem colocados no diretório nomeado por $destination , copiando todos os arquivos correspondentes para esse diretório.
No final de cada execução do seu script, você pode atualizar o registro de data e hora em seu arquivo de comparação com touch :
touch timestamp.file
e esse é o ponto de comparação que será usado na próxima vez. Se os arquivos puderem ser modificados enquanto o script estiver em execução, você precisará ser um pouco mais cuidadoso - atualize o arquivo de registro de data e hora logo no início, mas copie o antigo com seus atributos fora do caminho usando cp -p , e use isso para comparação (ou vice-versa).
Para comparar com o tempo atual (como no título), o -mtime test para find pode ser útil, mas acho que, no texto, o que você realmente quer é obter as alterações entre duas execuções do roteiro.
A tarring, interação do usuário, etc em seu script pode permanecer intocada. Se você quiser apenas arquivos no diretório atual (não subdiretórios), adicione -maxdepth 1 .