Aviso de isenção :
Não é de forma alguma um especialista em inotify
, eu vi isso como uma oportunidade para realmente aprender algo novo. Com isso fora do caminho, aqui está minha abordagem:
#!/bin/bash
watchedDir="toWatch"
inotifywait -m "$watchedDir" -e create |
while read -r file; do
name=$(stat --format %U $file 2>/dev/null)
date=$(stat --format %y $file 2>/dev/null)
fileName=${file/* CREATE /}
echo "File: '$fileName' Creator: $name Date: ${date%.*}"
done
Após a execução:
./watchDir.sh
Setting up watches.
Watches established.
Quando eu adiciono um arquivo ao diretório toWatch
de outro terminal:
touch toWatch/a_file
... esta é a saída que recebo:
./watchDir.sh
Setting up watches.
Watches established.
File: 'a_file' Creator: maulinglawns Date: 2016-12-10 12:29:42
E, adicionando outro arquivo ...
touch toWatch/another_file
Dá ...
./watchDir.sh
Setting up watches.
Watches established.
File: 'a_file' Creator: maulinglawns Date: 2016-12-10 12:29:42
File: 'another_file' Creator: maulinglawns Date: 2016-12-10 12:31:15
Claro, se você quiser que a saída seja redirecionada para um arquivo, você terá que implementar essa parte.
Isso é baseado na postagem do @jasonwryan aqui . Mas ainda não descobri a opção --format
para inotifywait
. Está na minha lista TODO, portanto escolho usar stat
.