Como alterar a data de modificação do diretório quando os arquivos desse diretório são alterados?

3

Por exemplo, se um arquivo tiver sido alterado nesse diretório, a data de modificação do diretório deverá ser atualizada. Basicamente, todas as alterações que acontecem nesse diretório devem acionar um "toque" no diretório.

Posso fazer o sistema fazer isso automaticamente quando essas operações de arquivo são realizadas?

Se sim, os diretórios pai também podem ser 'tocados' até root?

    
por Annie 24.07.2013 / 17:07

2 respostas

1

No Linux, você pode usar a interface inotify para realizar uma ação quando um arquivo é modificado. A partir do shell, você pode usar inotifywait .

inotifywait -e modify --format '%f' /path/to/directory |
while read line; do
  if [ -n "$line" ]; then touch /path/to/directory; fi
done

Se você quiser atualizar o registro de data e hora de /path/to/directory quando um arquivo for modificado em um subdiretório, adicione a opção -r a inotifywait .

    
por 25.07.2013 / 03:41
1

Esta é uma adição à resposta de Gilles .

Para tocar no diretório e em todos os seus diretórios pai, execute algo ao longo das linhas (não testado):

dir=/path/to/directory
inotifywait -e modify --format '%f' "$dir" |
while read line; do
   if [ -n "$line" ]; then
      # Handle relative paths.
      if [ "$(echo "$line" | cut -c1)" != / ] ; then
          path=.
      fi

      echo "$dir" | tr '/' '\n' |
      while read part ; do
         touch "$path/$part"
      done
   fi
done
    
por 25.07.2013 / 03:48