Comando para localizar arquivos para um intervalo de tempo específico

6

Eu tenho algumas máquinas Linux Red Hat Linux e preciso encontrar alguns arquivos nelas. O problema é que eles têm muitos arquivos e pastas desde 2004 ano. E não sei exatamente onde procurar esses arquivos.

Existe algum comando de terminal com o qual eu posso selecionar um intervalo de tempo específico. Eu quero ver todos os arquivos que foram alterados do mês passado (maio) para agora.

    
por Jason Paddle 28.06.2012 / 08:16

4 respostas

11

Sim, o comando find pode fazer isso. Vai levar um pouco de experimentação e leitura e reler a página de manual para fazê-lo fazer o que você quer, mas é um comando incrível. Abaixo estão 2 exemplos:

find . -type f -ctime -2 -print0 | xargs -0 tar -rvf ~/dev_customer_attributes.tar
find . -mmin -400 > /tmp/files.txt

O primeiro find usa -type f para listar apenas arquivos. -type d para diretórios. -ctime -2 é para arquivos com um tempo criado com menos de dois dias e, em seguida, adiciona-os ao arquivo tar. Não me lembro de quando usei este comando ou por que .

O segundo comando verifica os arquivos e diretórios modificados nos últimos 400 dias e as saídas dessa lista para files.txt Aqui está uma ótima página de informações que eu encontrei, também .

Exemplo, No meu ~ no meu laptop pessoal são arquivos tão antigos quanto o de 2010. E muitos que são mais recentes também. Ao executar find . -ctime -1000 -ctime +600 , listarei assim:

./Pictures/Photos
./Pictures/Photos/2005
./Pictures/Photos/2005/08
./Pictures/Photos/2005/08/29
./Pictures/Photos/2005/08/29/DSCN1023.JPG
./Pictures/Photos/2009
./Pictures/Photos/2009/02
./Pictures/Photos/2009/02/23
./Pictures/Photos/2009/02/23/img_0001.jpg
./Pictures/Photos/2010
./Pictures/Photos/2010/01
./Pictures/Photos/2010/01/01
./Pictures/Photos/2010/01/01/DSCN2170.JPG
./Pictures/Photos/2010/01/01/DSCN2171.JPG
./Pictures/Photos/2010/06
./Pictures/Photos/2010/06/04
./Pictures/Photos/2010/06/04/img_0111.jpg
./Pictures/Photos/2010/06/04/img_0112.jpg
./Pictures/Webcam/2010-10-03-045227.jpg
./.mission-control
./.mission-control/accounts
./.mission-control/accounts/accounts.cfg

Nesse caso, a pasta Pictures teve itens legados copiados de antes de 2010, mas o que aconteceu com o período de 400 dias há 600 dias.

    
por 28.06.2012 / 08:46
2

encontrar é o que você está procurando

find . -newermt "2012-05-01 00:00:00"

Isso fornecerá uma lista de arquivos correspondentes. Você pode adicionar o sinalizador -ls para obter mais informações. Assim

find . -newermt "2012-05-01 00:00:00" -ls

    
por 28.06.2012 / 08:44
2
$ man find

find . -name '*.doc' -type f -mtime -28

Lista todos os arquivos .doc abaixo (e no) diretório atual que possuem um 'mtime' (data de modificação) mais novo que 28 dias.

    
por 28.06.2012 / 08:40
1

Acho que você precisará do parâmetro -mtime do comando find. Veja se isso é alguma ajuda: link

    
por 28.06.2012 / 08:42