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