Localizando arquivos que foram modificados usando um script?

0

Eu preciso encontrar arquivos em um determinado diretório que foram modificados nos últimos N dias, onde N é o segundo argumento do script. Basicamente, eu preciso dar o comando com 2 números (argumentos) e executar um script que faria isso.

Esta linha de código está correta para encontrar os arquivos?

find . -type f -mtime $2 -exec ls -l {} \;
    
por Xamsa Abdul 10.01.2016 / 18:17

1 resposta

2

Classificar de. Você não precisa de -exec ls -l {} \; , o comando find já lista os arquivos. Se você quiser listá-los com mais detalhes, você pode usar find -ls . Não há nada de errado com -exec ls ... , tudo bem se você preferir isso, só não é necessário.

O -mtime N encontrará arquivos que foram modificados exatamente N dias atrás. Os detalhes estão em man find :

  +n     for greater than n,

  -n     for less than n,

   n      for exactly n.

Então, para encontrar os arquivos modificados nos últimos 2 dias, você executaria

find /target/path -mtime -2 -ls

Observe que find . pesquisará no diretório atual. Para pesquisar em um diretório específico, use um caminho como find /path/to/dir . Se o primeiro argumento for o diretório de destino, use (lembre-se de sempre citar suas variáveis):

find "$1" -mtime -"$2" -ls

Além disso, observe que -mtime lida apenas com períodos de 24 horas, "dias". Você precisará levar isso em conta ao escrever seu comando. Conforme explicado em man find (isso é para -atime , mas o mesmo se aplica a -mtime ):

File was last accessed n*24 hours ago. When find figures out how many 24-hour periods ago the file was last accessed, any fractional part is ignored, so to match -atime +1, a file has to have been accessed at least two days ago.

    
por 10.01.2016 / 18:50