Normalmente, você faria isso programaticamente no momento em que cria ou move o arquivo, mas é possível disparar um script sempre que um arquivo é criado ou movido para uma pasta usando incron
. Configure seu arquivo de tabulação usando incrontab -e
uma linha como esta, mas com seus caminhos, é claro:
/path/to/dir0 IN_MOVED_TO,IN_CREATE /path/to/script $@/$#
Em seguida, /path/to/script
escreva uma ação de renomeação rápida. Esteja ciente de que o script também será chamado para o novo arquivo que você cria, portanto, ele deve testar se o arquivo já foi nomeado adequadamente ou não. Neste exemplo, ele verifica se o arquivo tem um número de dez dígitos por segundos a partir da época como a última parte do nome do arquivo e, se não tiver, adiciona-o:
#!/bin/bash
echo $1 | grep -qx '.*_[0-9]\{10\}' || mv "$1" "$1_$(date +%s)"
Edit: Quando eu escrevi isso, eu estava com pouco tempo e não conseguia descobrir como bash
fazer o padrão correspondente aqui. Gilles apontou como fazer isso sem chamar o grep usando a correspondência ERE no bash:
#!/bin/bash
[[ ! ( $1 =~ _[0-9]{10}$ ) ]] && mv "$1" "$1_$(date +%s)"