Exclua os diretórios se eles não tiverem arquivos mais recentes

0

Eu quero excluir diretórios somente se eles não tiverem mudado nos últimos N dias. E por mudar quero dizer conter todos os arquivos que são mais recentes que N.

Eu construí algo similar / encontrado este mas ele não faz exatamente o que eu estava procurando.

    
por Ryan 06.11.2018 / 19:27

2 respostas

1

Gostaria de percorrer os diretórios em questão (aqui, cada subdiretório do diretório atual) e contar o número de linhas que find outputs; se esse número for zero, remova o diretório. O comando find simplesmente solicita arquivos no diretório especificado com menos de "N" dias (modificados nos últimos "N" dias).

N=3
for dir in */
do
  count=$(find "$dir" -type f -mtime -"$N" -print | wc -l)
  [ "$count" -eq 0 ] && echo rm -r -- "$dir"
done

Remova o echo se os resultados parecerem corretos.

    
por 06.11.2018 / 19:46
0

Minha ideia é assim:

 touch -d "4 days ago" .reference_file  
 for dir in */  
 do  
   [ $dir -ot .reference_file ] && rm -rf "$dir"  
 done

Primeiro, criamos um arquivo .reference_file, com a data de criação definida como "4 dias atrás".

Em seguida, para todos os diretórios neste diretório de trabalho, verificamos se o tempo de modificação é mais antigo ( -ot operator) do que o tempo de modificação de .reference_file.

Se é - removemos esse diretório por rm -rf $dir

Sempre que executamos esse script, a data de modificação de .reference_file será atualizada para sempre quatro dias antes.

    
por 07.11.2018 / 01:09