Com mv, é possível colocar uma dependência de tempo nos arquivos mv'ed?

1

Digamos que haja uma hora e data específicas em mente. Todos os arquivos foram editados pela última vez antes desta data. Eu quero manter no diretório, mas todos os arquivos que foram editados desde essa data, eu quero mv em outro lugar. A página man de mv não mostra isso sendo possível com mv diretamente. Eu pensei que alguma forma do seguinte deveria funcionar:

ls -t | head -n $number 

Onde $number especifica o número de arquivos que foram editados desde a hora e a data que eu tinha em mente. Eu poderia de alguma forma alimentar isso com mv to mv desses arquivos (não pensei exatamente como fazer isso). A desvantagem disso é que eu teria que contar quantos arquivos foram editados desde a data e hora que eu tinha em mente. Existe uma maneira de especificar uma data e hora e deixar meu computador descobrir quais arquivos precisam ser mv ed e mv para mim? Se não, como eu completaria o comando que escrevi acima para alimentar esses nomes de arquivos para mv para tê-los todos mv ed no mesmo local?

    
por Joshua 21.05.2014 / 22:56

1 resposta

3
find /path/to/dir -mtime +5 -exec mv {} /target/path/ ';'

moverá todos os arquivos em /path/to/dir com mais de cinco dias para / target / path.

Você pode tentar isso para ver o que realmente será executado:

find /path/to/dir -mtime +5 -exec echo mv {} /target/path/ ';'

Observe que o parâmetro -mtime verifica a hora da modificação do arquivo. Dê uma olhada em -ctime ou -atime na página de localização do para obter mais detalhes.

Se você quiser especificar seus tempos em minutos, use um dos -mmin , -cmin e -amin .

Para encontrar arquivos com menos de um período de tempo específico, use - em vez de + , por exemplo, -mmin -30 .

Outro método seria usar xargs (que executará um comando com cada uma de suas linhas de entrada; manpage ):

find /path/to/dir -mtime +5|xargs -i echo mv {} /target/path 

(remova o 'eco' para realmente mover as coisas)

    
por 21.05.2014 / 22:58